如果我通过 form.save() (django) 保存它们,如何连接多对多关系?
How to connect many to many relationaship if I save them via form.save() (django)?
这个link https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/说明我需要创建一个class的对象来保存连接。因为我的 classes 中有很多字段,所以我使用 form.save() 来保存它们,但这并没有填充 class 中的 ManyToMany 连接。如何填写该字段?
def create(response):
if response.method == "POST":
if "next" in response.POST:
form = CreateNewPerson(response.POST)
form.save()
form2 = CreateNewDog() # form doesn't have filed many_to_many to Person, but class Dog does
class CreateNewDog(forms.ModelForm):
class Meta:
model = Dog
fields = ['name','years_old', 'sex', 'blood_type', 'image']
class Dog(models.Model):
owner = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True)
user = models.ManyToManyField(User)
您可以像这样保存表单、获取实例并管理关系:
def create(request):
if request.method == "POST":
if "next" in request.POST:
form = CreateNewPerson(request.POST)
person = form.save() # get the person
form2 = CreateNewDog(request.POST)
dog = form2.save() # get the dog
dog.user.add(person) # assign the person to the dog
请注意,response
已更改为 request
。
这个link https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/说明我需要创建一个class的对象来保存连接。因为我的 classes 中有很多字段,所以我使用 form.save() 来保存它们,但这并没有填充 class 中的 ManyToMany 连接。如何填写该字段?
def create(response):
if response.method == "POST":
if "next" in response.POST:
form = CreateNewPerson(response.POST)
form.save()
form2 = CreateNewDog() # form doesn't have filed many_to_many to Person, but class Dog does
class CreateNewDog(forms.ModelForm):
class Meta:
model = Dog
fields = ['name','years_old', 'sex', 'blood_type', 'image']
class Dog(models.Model):
owner = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True)
user = models.ManyToManyField(User)
您可以像这样保存表单、获取实例并管理关系:
def create(request):
if request.method == "POST":
if "next" in request.POST:
form = CreateNewPerson(request.POST)
person = form.save() # get the person
form2 = CreateNewDog(request.POST)
dog = form2.save() # get the dog
dog.user.add(person) # assign the person to the dog
请注意,response
已更改为 request
。