在Django中困扰我的两件事:1.如何访问具有一对多父子关系的子模型中的父字段,以及2.如何在CreateView表单中将默认值设置为等于url参数。
对于第一个问题,我已经将子字段变成外键以访问父字段,但是我假设有一种更干净的方法可以执行此操作。
第2部分的代码
class Parent(models.Model):
parent_name = models.CharField(unique=True, max_length=40)
parent_slug = models.SlugField(unique=True)
class Child(models.Model):
child_name = models.CharField(unique=True, max_length=40)
child_slug models.SlugField(unique=True)
parent_name = models.ForeignKey(Parent, on_delete=models.CASCADE)
urlpatterns = [
...
path('<parent_slug>/children/', ChildListView.as_view(), name='child_list'),
...
]
class ChildCreateView(CreateView):
model = Child
form_class = NewBranchForm
template_name = 'child_new.html'
def form_valid(self, form):
form.instance.parent_slug = self.kwargs['parent_slug']
return super(ChildCreateView, self).form_valid(form)
class NewChildForm(forms.ModelForm):
class Meta:
model = Child
fields = ['child_name']