Save id(ForeignKey) field with the associated user in Django

I have model Drummer:

class Drummer(models.Model):
    first_name = models.CharField(max_length=32, verbose_name='Name')
    last_name = models.CharField(max_length=32, verbose_name='Last Name')
    date_of_birth = models.DateField(verbose_name='Date of birth', blank=True, null=True)
    date_of_death = models.DateField(verbose_name='Date of death',
                                     blank=True, null=True, default=None)
    bio = models.TextField(verbose_name='Bio')
    photo = models.ImageField(upload_to='images', null=True, verbose_name='Photo')
    slug = models.SlugField(max_length=250, db_index=True, null=True, unique=True, verbose_name='URL')
    group_name = models.ManyToManyField('Group', verbose_name='Group')
    users_drummer = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True

with the field users_drummer:

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

In template I am allowing edit drummers that were created by a specific user:

{% if request.user.id == person.users_drummer.pk %}
         ...edit...

where person is an instance of Drummer model

The problem is, that when I save form from a specific user, field users_drummer saves null field to data base, but I need that when user typed all form fields, field users_drummer would save with the associated user (users_id). Field users_drummer I don't output in the form because user don't have to manipulate with this field. The question is, how can I do that when user fills the form, the form would save into data base with users_drummer field with associated user? Something like this: users_drummer = user.id

The form:

class AddDrummerForm(forms.ModelForm):
  def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.fields['date_of_death'].required = False
    self.fields['date_of_birth'].required = False
    self.fields['photo'].required = False
    self.fields['group_name'].required = False 
  class Meta:
        model = Drummer
        fields = ('first_name', 'last_name', 'date_of_birth', 'date_of_death',
                  'bio', 'photo', 'slug')

View:

class AddView(CreateView):
    form_class = AddDrummerForm
    success_url = reverse_lazy('drummers:home')
    template_name = 'drummers/add_drummer.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['title'] = 'Adding drummer'
        return context
Вернуться на верх