Как получить доступ к родительским полям модели через внешний ключ - PullRequest
0 голосов
/ 17 июня 2019

Две вещи, которые ставят меня в тупик в 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...