【发布时间】:2021-07-26 05:37:33
【问题描述】:
我正在开发 Property Management django 应用程序,其中我的基本模型是 租户,包含所有基本信息,如姓名、姓氏、电子邮件等。愿意的租户将能够创建 用户帐户 以便他们可以登录并预订健身房/电影院,但并非所有租户都需要拥有用户帐户。我的问题是:
如何根据现有租户对象创建新用户帐户?显然,用户将拥有 Tenant ForeignKey,但如何将 Tenant.name、Tenant.surname 等提取到我的用户模型中的多个字段?
ForeignKey 只给了我对对象的引用,但我可以在创建新用户期间以某种方式访问该对象的某些字段,因此我确保 Tenant.email 与 user.email 相同?
编辑
tenancy = (('Tenant', 'Tenant'),('Owner', 'Owner'), ('Other', 'Other'))
class Tenant(models.Model):
name = models.CharField(max_length=15, null=True, blank=False)
surname = models.CharField(max_length=30, null=True, blank=False)
email = models.EmailField(max_length=50, unique=True)
phone_number = models.CharField(max_length=20, null=True, blank=True, unique=True)
flat = models.ForeignKey(Flat, on_delete=models.PROTECT)
status = models.CharField(max_length=10, choices=tenancy, null=True, blank=False)
stay_length = models.CharField(max_length=20, null=True, blank=False)
pet_licence = models.CharField(max_length=20, null=True, blank=False)
additional_notes= models.TextField(max_length=300, blank=True)
date_added = models.DateField(auto_now_add=True, null=True)
moved_out = models.BooleanField(default=False)
date_moved_out= models.DateField(auto_now_add=False, null=True)
class Meta:
unique_together = ('name', 'surname',)
def __str__(self):
return f'{self.name} {self.surname}'
现在我想创建用户帐户模型,其中 name、surname、email、phone_number 和 flat 将是 Tenant 模型的 ForeignKeys。是否有可能让 1 个对象中的 4 个 ForeignKeys 填充新模型?
我尝试过使用 ForeignKey.limit_choices_to、ForeignKey.related_name、ForeignKey.to_field(这很接近,但与相关的字段必须是唯一的,这对我的情况不起作用)但一切都会出错。我只是想知道是否有可能将 1 个对象的 1 个以上的 ForeignKey 定向到新模型对象的多个不同字段。
【问题讨论】:
-
什么是租户?
-
您能否展示您的模型,以及到目前为止您为解决此问题所做的尝试?
-
JoranBeasley 租户是租用公寓、公寓或任何其他地方居住的人。 @bdbd 我在编辑中回答,如果你有机会看看。谢谢!
-
您是否考虑过one-to-one 与用户模型的关系可以为空?
-
@bdbd 我不能让用户为 null - 每个用户都必须被分配给具有相同字段的确切 1 个租户,但并非每个租户都必须成为用户。 null=True 的 1to1 并不能解决如何使用 Tenant 的更多字段并将它们分配给用户的更多字段的问题。
标签: python django django-models