将客户分配给卖家
Assign clients to seller
在我的应用程序中有两种类型的用户,卖家和客户。每个客户只能分配给一个卖家,但一个卖家可以有多个客户。
我创建了一个用户模型,所以我所有的用户都保存在同一个地方。在模型中有一个名为“is_seller”的布尔字段和另一个名为“is_client”的布尔字段。这些设置为 true 取决于用户使用的注册表单。
客户必须在注册时分配,但我无法理解我应该如何实现这个逻辑。我将不胜感激各种指导!
如果我是你,我会这样做:
class Person(models.Model):
class Meta:
abstract = True
user = models.OneToOne(User, on_delete=models.CASCADE)
def is_seller(self):
return hasattr(self, 'seller')
def is_client(self):
return hasattr(self, 'client')
class Seller(Person):
pass
class Client(Person):
seller = models.ForeignKey(Seller,
on_delete=models.CASCADE,
related_name="clients")
因此您可以这样做:
# example to read a person:
p = Person.objects.get(pk=1)
# if he's a seller, display all his clients:
if p.is_seller():
for client in p.clients.all():
print(f"Seller {p} has this client: {client}")
反之:如果他是客户,则显示他的卖家
# example to read a person:
p = Person.objects.get(pk=1)
# if he's a client, display all his seller:
if p.is_client():
print(f"Client {p} has this seller: {p.seller}")
我没有测试它,但它非常接近 well-tested 代码。
在我的应用程序中有两种类型的用户,卖家和客户。每个客户只能分配给一个卖家,但一个卖家可以有多个客户。
我创建了一个用户模型,所以我所有的用户都保存在同一个地方。在模型中有一个名为“is_seller”的布尔字段和另一个名为“is_client”的布尔字段。这些设置为 true 取决于用户使用的注册表单。
客户必须在注册时分配,但我无法理解我应该如何实现这个逻辑。我将不胜感激各种指导!
如果我是你,我会这样做:
class Person(models.Model):
class Meta:
abstract = True
user = models.OneToOne(User, on_delete=models.CASCADE)
def is_seller(self):
return hasattr(self, 'seller')
def is_client(self):
return hasattr(self, 'client')
class Seller(Person):
pass
class Client(Person):
seller = models.ForeignKey(Seller,
on_delete=models.CASCADE,
related_name="clients")
因此您可以这样做:
# example to read a person:
p = Person.objects.get(pk=1)
# if he's a seller, display all his clients:
if p.is_seller():
for client in p.clients.all():
print(f"Seller {p} has this client: {client}")
反之:如果他是客户,则显示他的卖家
# example to read a person:
p = Person.objects.get(pk=1)
# if he's a client, display all his seller:
if p.is_client():
print(f"Client {p} has this seller: {p.seller}")
我没有测试它,但它非常接近 well-tested 代码。