我有 2 个使用一对一关系相互关联的模型。如果一个模型的对象已经与另一个模型相关,我如何显示验证错误。
假设我有 2 个模型
Class Place(models.Model):
field1 = CharField()
field2 = CharField()
Class Restaurant(models.Model):
related_field = OneToOneField(Place)
field3 = CharField()
就我而言,一个地方一个餐厅。如果用户为同一个地方提交新餐厅,那么验证应该引发
如果 Restaurant 对象已经附加到 Place 对象,那么对于同一个 Place 对象的第二家 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())
如何在基于类的通用视图中执行一对一关系验证?