【发布时间】:2017-05-03 02:43:04
【问题描述】:
我创建了一个通过 ForeignKey 连接到父模型的子模型。当我尝试创建一个 Child 实例时,它什么也不返回。我不确定我的观点 child.Parent 是否正常工作。我将不胜感激帮助我解决这个问题。
这是我的代码:
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 -
谢谢老兄,一个小错误!!
标签: django django-models django-forms foreign-keys django-views