Я разрабатываю интерфейс обратной связи с Django.Они смогут войти и подать жалобу.Предполагается, что эта жалоба будет храниться в базе данных с пользователем, который отправил ее в качестве атрибута.
Я пытался каким-то образом передать пользователя в форму, чтобы форма сохраняла имя пользователя, прошедшего проверку подлинности, но у меня нетне удалось передать данные из представления в форму.Мне удалось интегрировать ModelChoiceField () в ModelForm, но это позволяет аутентифицированному пользователю манипулировать именем пользователя, с которым будет связана жалоба.
models.py:
from django.db import models
from django.contrib.auth.models import User
class Complaint(models.Model):
complaint_text = models.CharField(max_length=1000, default='')
switch_schedule_yes_or_no = models.BooleanField(default=True)
user = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
views.py:
from .forms import ComplaintForm
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required()
def complaint_view(request):
form = ComplaintForm(request.POST)
if form.is_valid():
form.save()
form = ComplaintForm()
context = {
'form': form,
}
return render(request, 'complaint.html', context)
forms.py:
from django import forms
from .models import Complaint
from django.contrib.auth.models import User
class ComplaintForm(forms.ModelForm):
complaint_text = forms.CharField(max_length=1000)
switch_schedule_yes_or_no = forms.BooleanField()
user = forms.ModelChoiceField(queryset=User.objects.all())
class Meta:
model = Complaint
fields = ['complaint_text', 'switch_schedule_yes_or_no', 'user']
Если есть возможность каким-то образом спроектировать это, это позволяет жалобе быть связанной с аутентифицированным пользователемэто было бы удивительно!Будь то путем передачи параметров из представления в форму или с помощью пользовательских URL-адресов.Я пытался решить это уже несколько дней.
Ура!