Отказ от ответственности: я новичок в Django, поэтому я уверен, что мой код уродлив.
Проблема : Моя текущая модель построена следующим образом:
class person(models.Model):
email = models.EmailField()
date = models.DateField()
phone_number = models.IntegerField()
name = models.CharField(max_length = 50)
belongs_to_group = models.ForeignKey(Group, related_name='group', on_delete=models.SET_NULL, null=True)
belongs_to_user = models.ForeignKey(User, related_name='user', on_delete=models.SET_NULL, null=True)
Я построил для этого модель formset_factory, используя следующий код:
personModelFormset = modelformset_factory(
person,
fields=('email', 'date' , 'phone_number', 'name'),
extra=1)
Это позволяет заполнить поля формы в электронном письме HTML, дате, номере телефона и имени.Это означает, что для успешного сохранения формы в базе данных мне также необходимо добавить поля belongs_to_group
и belongs_to_user
вручную, поскольку пользователь веб-сайта не должен иметь возможности их редактировать (они должны генерироваться автоматически).
Попытка решения : Чтобы попытаться сделать это, я использовал следующее представление:
def classes(request):
#add form creation method here
user = request.user
group = value #taken from another form
if request.method == 'POST':
form_2 = personModelFormset (request.POST)
if form_2.is_valid():
for form in form_2:
form.belongs_to_group = value
form.belongs_to_user = user
form.save()
return redirect('home')
Но это не добавляет информацию к форме.Этот метод работает для меня в обычном modelform
, поэтому я думаю, что я не использую modelformset_factory
правильно.Кто-нибудь знает, как мне правильно добавить поля модели "за кадром" в фабрику форм?Спасибо!