Автоматическая передача id из одной таблицы в другую в форме с помощью ForeignKey в Django
#HELP в python (DJANGO 4)
Я отправляю это сообщение сюда, потому что не смог найти ответ в другом месте. Сейчас я нахожусь в проекте, где мне нужно создать форму бронирования. Цель состоит в том, что когда пользователь отправляет форму бронирования, я отправляю данные в BDD, и я получаю идентификатор пользователя по отношению (ForeignKey). И моя трудность заключается именно в этом, когда я отправляю свою форму в BDD, я восстанавливаю информацию, кроме id пользователя... Я создал отношение Foreignkey между двумя таблицами и вижу это отношение в BDD, но я не получаю id таблицы User, а получаю null в place..... Кто-нибудь из вас знает, как мне помочь, пожалуйста? Спасибо всем.
--Мой model.py --
class Reservation(models.Model):
fullName = models.CharField('Nom Complet', max_length=250, null=True)
adress = models.CharField('Adresse', max_length=100, null=True)
zip_code = models.IntegerField('Code Postal', null=True)
city = models.CharField('Vile', max_length=100, null=True)
email = models.EmailField('Email', max_length=250, null=True)
phone = models.CharField('Telephone', max_length=20, null=False)
date = models.CharField('Date', max_length=20, null=True, blank=True)
hour = models.CharField('Heure', max_length=20, null=True, blank=True)
message = models.TextField('Message', null=True)
accepted = models.BooleanField('Valide', null=True)
created_at = models.DateTimeField('Date Creation', auto_now_add=True, null=True)
modified_at = models.DateTimeField('Date Mise Jour', auto_now=True, null=True)
user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.fullName
-- мой views.py --
@login_required()
def user_new_reservation(request, pk=None):
user = User.objects.get(id=pk)
if request.method == 'POST':
form = ReservationForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Votre réservation a bien été envoyé!')
return redirect('reservation:user_reservation', pk=request.user.id)
else:
form = ReservationForm()
context = {'form': form}
return render(request, 'reservation/new_reservation.html', context)
-- Мой Form.py --
class ReservationForm(forms.ModelForm):
class Meta:
model = Reservation
fields = [
'fullName',
'adress',
'zip_code',
'city',
'email',
'phone',
'date',
'hour',
'message',
]
Спасибо вам всем.
Внутри вашей формы.save используйте:
form.save(user=request.user)
user=имя вашего поля в вашей модели
request user= в django, когда вы используете аутентификацию, вы можете получить доступ к некоторой информации на основе запроса, такой как пользователь и другие
Удачи