ModelFormset в Django CreateView
Я все еще новичок в Django & я хотел бы знать, как можно позволить пользователю добавлять более 1 ReferrerMember на форме регистрации, как я хотел бы достичь похожего на изображение url ниже
Я применил modelformset, но пока что он выдает ошибку, где "membership_id" нарушает ограничение not-null в момент отправки формы. Я искал почти везде, как это правильно реализовать, особенно в представлении на основе классов, а не на основе функций, но пока безуспешно. Если возможно, пожалуйста, помогите мне указать на ошибки, которые я допустил, или на полезные ресурсы, к которым я могу обратиться
models.py
class RegisterMember(models.Model):
name = models.CharField(max_length=128)
email = models.EmailField()
class ReferrerMember(models.Model):
contact_name = models.CharField(max_length=100)
company_name = models.CharField(max_length=100)
membership = models.ForeignKey(RegisterMember, on_delete=models.CASCADE)
forms.py
class RegisterMemberForm(ModelForm):
class Meta:
model = RegisterMember
fields = ['name', 'email', ]
class ReferrerForm(ModelForm):
class Meta:
model = ReferrerMember
fields = ['contact_name ', 'company_name ', ]
ReferrerMemberFormset = modelformset_factory(ReferrerMember, form=RegisterMemberForm, fields=['contact_name ', 'company_name ', ], max_num=2, validate_max=True, extra=2)
views.py
class RegisterMemberView(CreateView):
form_class = RegisterMemberForm
template_name = 'register.html'
def post(self, request, *args, **kwargs):
member_formset = ReferrerMemberFormset (request.POST, queryset=ReferrerMember.objects.none())
if member_formset .is_valid():
return self.form_valid(member_formset )
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['member_formset'] = ReferrerMember(queryset=ReferrerMember.objects.none())
return context
register.html
<form method="post">
{% csrf_token %}
{{form.as_p}}
{{member_formset.as_p}}
<input type="submit">
</form>