Django modelformset_factory () добавление поля вручную в представления - PullRequest
0 голосов
/ 22 сентября 2019

Отказ от ответственности: я новичок в 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 правильно.Кто-нибудь знает, как мне правильно добавить поля модели "за кадром" в фабрику форм?Спасибо!

...