如何通过外键访问模型的父字段

时间:2019-06-17 00:31:06

标签: django django-models foreign-keys

在Django中困扰我的两件事:1.如何访问具有一对多父子关系的子模型中的父字段,以及2.如何在CreateView表单中将默认值设置为等于url参数。

对于第一个问题,我已经将子字段变成外键以访问父字段,但是我假设有一种更干净的方法可以执行此操作。

第2部分的代码

models.py

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)

urls.py

urlpatterns = [
    ...
    path('<parent_slug>/children/', ChildListView.as_view(), name='child_list'),
    ...
]

views.py

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)

forms.py

class NewChildForm(forms.ModelForm):

class Meta:
    model = Child
    fields = ['child_name']

0 个答案:

没有答案