добавить значение внешнего ключа (пользователя) в поля django createview - PullRequest
0 голосов
/ 08 октября 2018

Я хочу вставить данные, и я использую создание представления.Проблема в том, что я также хочу передать внешний ключ в поле, которое не приходит из формы, как это сделать?

пример:

class Addfile(CreateView):  
model=uploadAssignment
fields=['teacher','title','description','deadline']

Все поля, кроме учителя, получены изформа. Где учитель будет пользовательским объектом, который вошел в систему, как сохранить его в полях (учитель)?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вам необходимо добавить ограничение внешнего ключа в ваш файл models.py, например, который должен выглядеть как

import <teacher/user>model as User
class UploadAssignment(models.Model):
     models.ForeignKey(User,blank=True,null=True,default=None,
                             on_delete=models.CASCADE)
     title = models.CharField(max_length=250, blank=False)
     description = models.CharField(max_length=250, blank=False)
     deadline = models.DateField()
0 голосов
/ 08 октября 2018

вам придется переопределить функцию form_valid, и внутри нее вам необходимо соответственно связать внешний ключ

class Addfile(CreateView):
  success_message = 'Added Successfully'
  form_class = ...

  def form_valid(self, form):
    form.instance.teacher = self.request.user #here you bind the foreign key teacher to the current user

    response = super(Addfile, self).form_valid(form)

    return response
...