В Django с all-auth, как передать аутентифицированного пользователя из фронт-энда для сохранения в таблице базы данных через форму?

Я смог заставить свою форму записывать данные в базу данных, но у меня есть две проблемы. Одна из них связана с передачей имени_сайта в поле slug, чтобы пользователю не приходилось вручную вводить slug, а другая - с автоматической передачей аутентифицированного пользователя в поле "pilot". Я хотел бы обратиться к вопросу о пользователе с этим вопросом. Когда я отображаю все поля модели в виде формы, я могу вручную выбрать пользователя из выпадающего списка возможных пользователей (все пользователи) при отправке формы. Я хотел бы убрать это поле из формы и сделать так, чтобы оно автоматически заполнялось именем текущего аутентифицированного пользователя. Есть ли способ установить значение по умолчанию в поле 'pilot' модели, чтобы оно было именем текущего аутентифицированного пользователя? Я пробовал несколько разных способов, но сталкиваюсь с различными ошибками. Я очень новичок в Django, поэтому у меня нет большого понимания. Я включил предыдущую попытку в закомментированное представление. Спасибо за помощь.

View

def UploadFlyingSite(request):
    if request.method == "POST":
        form = SiteUpload(request.POST)
        if form.is_valid():
            
            site_details = form.save()
            site_details.pilot = request.user.username
            site_details.slug = site_details.site_name
            site_details.save()



            # form.instance.pilot = request.pilot.username
            # form.instance.slug = request.POST.get('site_name')
            # new_site = form.save(commit=False)
            
            # new_site.save()
            
            return HttpResponseRedirect('/sites')

Модель

class FlyingSite(models.Model):

    WIND_CHOICES = (
        ('N', 'N'),
        ('NW', 'NW'),
        ('NE', 'NE'),
        ('S', 'S'),
        ('SE', 'SE'),
        ('SW', 'SW'),
        ('E', 'E'),
        ('W', 'W'),)
    site_name = models.CharField(max_length = 150, unique=True)
    wind_direction = models.CharField(max_length = 150, choices=WIND_CHOICES)
    slug = models.SlugField(max_length=200, unique=True)
    # slug = AutoSlugField(populate_from='title',editable=True, always_update=True)
    pilot = models.ForeignKey(User, on_delete=models.CASCADE, related_name="flying_sites")
    updated_on = models.DateTimeField(auto_now=True)
    overview = models.TextField()
    landing_information = models.TextField()
    warnings = models.TextField()
    featured_image = CloudinaryField('image', default='placeholder')
    status = models.IntegerField(choices = STATUS, default = 0)
    approved = models.BooleanField(default=False)
    
    
    class Meta:
        ordering = ["-updated_on"]

    def __str__(self):
        return self.site_name

Форма

class SiteUpload(forms.ModelForm):
    class Meta:
        model = FlyingSite
        fields = ('site_name', 'wind_direction', 'overview', 'landing_information', 'warnings', 'featured_image', 'status')
Вернуться на верх