【发布时间】:2014-03-09 19:22:03
【问题描述】:
我想为以下应用建模:一个 Owner 有不同的 Shop,每个 Shop 都有一些 Customer 和一些为该 Shop 工作的员工;同一员工可以在属于同一业主的不同店铺工作,也可以在属于不同业主的店铺工作。 只有所有者和员工可以登录系统,客户不能登录。 我创建了以下模型并将用户添加到不同的组(使用 Django Auth 系统和允许自定义用户模型的 1.6.2 版),但我担心应用程序正在执行的查询数量,我真的不确定关于建模。 最大的难点在于,如果Owner有多个Shop,当Own登录系统时,需要选择合作的Shop,还要能够添加相关的Employees和Customers(只有Shop的Owner可以添加员工和客户)
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.CharField(max_length=254,
unique=True)
firstname = models.CharField(max_length=64)
lastname = models.CharField(max_length=64)
...
objects = CustomUserManager()
USERNAME_FIELD = 'email'
...
class Shop(models.Model):
name = models.CharField(...)
city = ...
address = ...
class Customer(models.Model):
shop = models.ForeignKey(Shop)
...
class Employee(CustomUser):
shops = models.ManyToManyField(Shop)
...
class Owner(CustomUser):
shops = models.ManyToManyField(Shop)
...
现在,当员工或所有者使用他的电子邮件登录系统时,应用程序需要显示一个包含可用商店的选择框,并且用户的选择需要传递到应用程序的每个视图:如何我这样做?我想不能是 POST,因为我将在应用程序中有其他表单,应该是 GET 请求,但是在每个请求中我需要验证商店是属于所有者还是属于员工(查询数量增加) .我已经开发了应用程序的很大一部分(例如订单),但我又回到了起点;我不知道我做的所有模型都应该与Shop相关还是与Owner相关。 任何建议表示赞赏。谢谢。
【问题讨论】:
标签: django django-models django-templates