Я нашел много вопросов и ответов по этой теме, но все они оставляют меня в замешательстве относительно того, что было бы лучшим способом справиться с этим, и кажется, что нужно рассмотреть много аспектов (например, я читал оФункция validate_unique () в ModelForm, но некоторые говорят, что было бы небезопасно передавать пользователя в форму)
Я хочу создать форму, которую пользователи могут использовать для регистрации на событие. Событие является производным от URL-адреса, пользователя от запроса. Следовательно, я на самом деле не нуждаюсь в форме. Тогда проблема заключается в том, чтобы провести проверку для Together_uniqueness, поскольку для каждого события может быть только одна регистрация.
В настоящее время мой код выглядит следующим образом:
models.py:
class Participant(models.Model):
class Meta:
constraints = [models.UniqueConstraint(fields=["user", "event"], name="user_unique_per_event")]
user = models.ForeignKey(LocalUser, on_delete=models.PROTECT)
event = models.ForeignKey(Event, on_delete=models.CASCADE)
participating = models.BooleanField()
forms.py:
class EventRegistrationForm(forms.ModelForm):
class Meta:
model = Participant
fields= ['participating']
views.py:
class EventRegistrationView(CreateView):
template_name = 'events/event_registration.html'
form_class = EventRegistrationForm
queryset = Event.objects.all()
def form_valid(self, form):
form.instance.event = Event.objects.get(slug=self.kwargs['slug'])
form.instance.user = self.request.user
- Какой лучший способ реализовать проверку на ограничение unique_together?
- Как лучше всего обработать ошибку, которая возникнет после этой проверки?