One to One Relation を使用して相互に関連付けられている 2 つのモデルがあります。あるモデルのオブジェクトが既に別のモデルに関連付けられている場合、検証エラーを表示するにはどうすればよいですか。
2つのモデルがあるとします
Class Place(models.Model):
field1 = CharField()
field2 = CharField()
Class Restaurant(models.Model):
related_field = OneToOneField(Place)
field3 = CharField()
私の場合、1つの場所に1つのレストラン。ユーザーが同じ場所の新しいレストランを送信すると、検証で発生するはずです
Restaurant オブジェクトが既に Place オブジェクトにアタッチされている場合、同じ Place オブジェクトの 2 番目の Restaurant に対して、検証を表示したい
管理画面では通常、「この場所のレストランは既に存在します。 」というメッセージが表示されます。
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())
クラスベースのジェネリックビューで1対1の関係検証を実行するにはどうすればよいですか?