Сохранить поле id с ассоциированным пользователем в Django

class Drummer(models.Model):
    first_name = models.CharField(max_length=32, verbose_name='Имя')
    last_name = models.CharField(max_length=32, verbose_name='Фамилия')
    date_of_birth = models.DateField(verbose_name='Дата рождения', blank=True, null=True)
    date_of_death = models.DateField(verbose_name='Дата смерти',
                                     blank=True, null=True, default=None)
    bio = models.TextField(verbose_name='Информация')
    photo = models.ImageField(upload_to='images', null=True, verbose_name='Фотография')
    slug = models.SlugField(max_length=250, db_index=True, null=True, unique=True, verbose_name='URL')
    group_name = models.ManyToManyField('Group', verbose_name='Группа')
    users_drummer = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True

У меня есть модель Drummer, которую я описал выше ☝️ с полем

users_drummer =  models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) 

В шаблоне я позволяю пользователю редактировать только те записи, которые создавались конкретным пользователем.

 {% if request.user.id == person.users_drummer.pk %}
         редактировать

Проблема в том, что когда я сохраняю форму от пользователя, то поле
users_drummer сохраняет в базу данных пустое поле (null), а мне нужно, чтобы когда пользователь вводил все поля формы в базу данных, поле users_drummer сохранялось с ассоциированным с пользователем (user_id). Поле users_drummer я не вывожу в форме, потому что это поле пользователь не должен видеть. Как мне сделать так, чтобы при заполнении пользователем формы, она сохранялась в базу данных с полем users_drummer ассоциированным с конкретным пользователем? Форма:

class AddDrummerForm(forms.ModelForm):
 class Meta:
        model = Drummer
        fields = ('first_name', 'last_name', 'date_of_birth', 'date_of_death',
                  'bio', 'photo', 'slug')

если я правильно понял суть задачи, то можно либо через переопределение метода save() формы:

class AddDrummerForm(forms.ModelForm):
  def save(self, request, commit=True):
    drummer = super().save(commit=False)
    drummer.users_drummer = request.user
    if commit:
      drummer.save()
    return drummer
  class Meta:
    model = Drummer
    fields = ('first_name', 'last_name', 
              'date_of_birth', 'date_of_death',
              'bio', 'photo', 'slug')

либо создать скрытое поле формы users_drummer и в шаблоне уже присвоить ему нужное значение

Вернуться на верх