【发布时间】:2017-07-28 04:48:18
【问题描述】:
我有两个类Customer 和Restaurant 有OneToOneField 和内置的django User。当我转到一个页面时,我试图确定它是哪个User。我正在做的事情不起作用,因为 User 模型将始终返回 True 因为具有 restaurant 属性,所以它永远不会超过第一个 if 语句...
models.py
class Restaurant(models.Model):
restaurant_user = models.OneToOneField(User, on_delete=models.CASCADE)
restaurant_name = models.TextField(max_length=50)
about = models.CharField(max_length=500)
class Customer(models.Model):
customer_user = models.OneToOneField(User, on_delete=models.CASCADE)
about = models.CharField(max_length=500)
views.py
def dashboard(request):
if User.restaurant:
return render(request,'usermanage/dashboard_restaurant.html')
elif User.customer is not None:
return redirect(request, 'usermanage/dashboard.html')
else:
return render(request, 'usermanage/dashboard.html')
【问题讨论】:
-
您应该在
CustomUser模型中设置一个标志或状态字段或角色字段来描述用户类型。然后,您可以在没有任何复杂性的情况下区分两者。否则,Django 无法区分 Restaurant 用户和 Customer 用户。
标签: python django one-to-one