Django:构建具有多个关系的用户模型。用户 - >卖家 - >买方和用户 - >买方

时间:2017-08-17 01:48:33

标签: django django-authentication geodjango

我尝试创建以下结构:我有SellersBuyers,两者都是我网站的Users。我希望一个人能够搜索卖家并根据用户位置,显示最接近的Sellers

我使用默认的Django User身份验证,我只能看到usernamepassword字段。我还想保存Seller名称。我应该将它添加到Seller模型中,还是以某种方式合并到User模型中?我已经查看了一些应用程序,例如Django Profiles,我想知道它是否是最好的方法。

为此,我创建了一个新的应用users并在/users/models.py

中为卖家创建了一个模型
class Seller(models.Model):
    user = models.ForeignKey(User, unique=True)
    price = models.IntegerField(default=0)
    availability = models.BooleanField(default=False)
    verified = models.BooleanField(default=False)

class Buyer(models.Model):
    user = models.ForeignKey(User, unique=True)
    seller = models.ForeignKey(Seller)

目前我可以显示卖家,但我无法访问他们的姓名或用户ID。我应该只是将他们的姓名和姓氏存储在卖家模型中,还是应该使用身份验证应用?此外,没有__str__(self)方法,因为我没有合理的标识符,例如姓名。

我可以向卖家和买家添加冷杉名称,但是如果买家成为卖家,它将有2套名称。

1 个答案:

答案 0 :(得分:0)

使用OneToOneField

user = models.OneToOneField(User, on_delete=models.PROTECT, related_name='buyer')

然后,您可以使用user.buyeruser.seller来访问详细信息。您还应该检查他们是否有买家或卖家资料。