В 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')