У меня есть 2 модели, которые связаны друг с другом с помощью отношения «один к одному». Как я могу отобразить ошибку проверки, если объект одной модели уже связан с другой.
Предположим, у меня есть 2 модели
Class Place(models.Model):
field1 = CharField()
field2 = CharField()
Class Restaurant(models.Model):
related_field = OneToOneField(Place)
field3 = CharField()
В моем случае На одно место один ресторан. Если пользователь отправляет новый ресторан для того же места, проверка должна подняться
Если объект «Ресторан» уже прикреплен к объекту «Место», поэтому для второго ресторана для того же объекта «Место» я хочу отобразить проверку
В админке мы обычно видим это сообщение "Ресторан с этим местом уже существует." Но как я могу добиться того же, используя форму модели с общими представлениями?
class RestaurantCreateView(CreateView):
form_class = RestaurantForm
template_name = 'restaurant_create.html'
def get_success_url(self):
return reverse_lazy('restuarants', args=[self.object.id])
def get_place(self, **kwargs):
id = self.kwargs['pk']
place = Place.objects.get(id=id)
return place
def get_context_data(self, **kwargs):
context = super(RestaurantCreateView, self).get_context_data(**kwargs)
place = self.get_place()
context['place'] = place
return context
def form_valid(self, form):
self.object = form.save(commit=False)
place = self.get_place()
self.object.place = place
self.object.save()
return HttpResponseRedirect(self.get_success_url())
Как можно выполнить проверку отношения «один к одному» в общих представлениях на основе классов?