Я создал дочернюю модель, связанную с родительской моделью через ForeignKey. Когда я пытался создать экземпляр Child, он ничего не возвращает. Я не уверен в своих взглядах на child.Parent работает нормально или нет. Буду признателен за помощь в решении этого вопроса.Django/python: Как назначить поле ForeignKey для дочерней модели в представлениях Django?
Вот мой код:
models.py:
Parent(models.Model):
Parent = models.CharField(max_length=30)
def __str__(self):
return self.id
def get_absolute_url(self):
return reverse("parents:detail", kwargs={"id": self.id})
Child(models.Model):
Parent = models.ForeignKey(Parent, related_name='children')
Child = models.CharField(max_length=30)
def __str__(self):
return self.id
forms.py:
ChildForm(models.ModelForm):
Parent = forms.CharField(widget=forms.HiddenInput)
class Meta:
model = Child
fields = ["Parent", "Child",
]
views.py:
def child_create(request, id):
parent_instance = get_object_or_404(Parent, id=id)
form = ChildForm(request.POST or None)
if form.is_valid():
child = form.save(commit=False)
child.Parent = form.cleaned_data.get('parent_id')
child.save()
return HttpResponseRedirect(parent_instance.get_absolute_url())
context = { 'form':form, 'parent_instance':parent_instance,}
return render(request, "child_create.html", context)
шаблоны/child_create.html :
{{if parent_instance.id}}
<form class="nomargin" method='POST' action='' enctype='multipart/form-data'>{% csrf_token %}
{{ form|crispy }}
<input type='hidden' name='parent_id' value='{{ parent_instance.id }}' />
<input type='submit' value='Add a Child' class='btn btn-default' />
</form>
{% endif %}
'child.Parent = form.cleaned_data.get ('parent_id')' должен быть 'child.Parent = parent_instance' – e4c5
Спасибо, чувак, небольшая ошибка! – sumanth