我有一个用于企业的Web应用程序。登录后,用户(业务经理(可以查看有关其业务信息的表。
用户ID 1->*在Mastertable中行,
用户ID 1->*预测中的行
我需要更改它,以便多家公司的所有者可以登录特定业务的帐户,并编辑经理可以的信息。
我正在考虑将数据库架构更改为这样的东西:UserId - businessId 1-*行中的行,排在预测中的行
我应该有2个登录页面,首先是用户ID,然后是BusinessID。然后,数据库中的所有列仅引用BusinessID,因此不同的用户可以编辑相同的数据。
或相同的登录表单使用户输入BusinessID及其用户名,然后取决于他们输入哪个BusinessID,它将登录到该页面?
我不确定实施这样的事情的最佳实践是什么。
这是我的Django模型的样子:
from django.db import models
from django.contrib.auth.models import User
class MasterEntry(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
date = models.DateField()
cutoff1 = models.IntegerField(default=0)
cutoff2 = models.IntegerField(default=0)
rooms_sold = models.IntegerField(default=0)
is_blackout = models.BooleanField(default=False)
class ForecastEntry(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
date = models.DateField()
rate = models.IntegerField(default=0)
用户有数百个"主条目"one_answers"预测条目"行。我查询行的数据库,并在前端创建一个表。
您不需要两层身份验证。
例如,不是管理员的用户只能查看他拥有的业务,这是在显示上述业务列表中的简单过滤器中实现的。
您可以将每个业务名称渲染为一个链接,然后在其中显示MasterEntry
s的列表。
这是信息布局的问题。
结论:
- 仅显示一个属于身份验证用户的业务的页面。
- 超级用户可以看到所有业务。
- 您可以单击业务条目,以查看/删除它包含的任何
MasterEntry
S。