如何使用django allauth(如 Fiverr)实现两种用户类型(卖家和客户或买家)?

问题描述 投票:0回答:2

我正在开发一个网络电子商务项目,其中有两种类型的用户(卖家、客户)。我一直想知道如何实现像 Fiverr 卖家和买家这样的逻辑。我已经创建了一个带有两个标志的用户帐户(is_seller、is_customer)。

class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(max_length=254, unique=True)
name = models.CharField(max_length=254, blank=True)
customer = models.ForeignKey('Customer', on_delete=models.CASCADE)
is_seller = models.BooleanField(default=False)
is_customer = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
last_login = models.DateTimeField(null=True, blank=True)
date_joined = models.DateTimeField(auto_now_add=True)

USERNAME_FIELD = 'email'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = []

objects = UserManager()

我想要 2 个用户(卖家和客户)。卖家也可以请求客户帐户(因此同一电子邮件将用于登录和注册),反之亦然。 应对这种情况的最佳方法是什么?

django django-models e-commerce django-allauth
2个回答
1
投票

由于卖家和客户会有不同的数据字段,用户应该能够在买家和卖家资料之间切换。

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    USER_ROLES = (
        ('buyer', 'Buyer'),
        ('seller', 'Seller'),
    )
    role = models.CharField(max_length=20, choices=USER_ROLES)

    # Additional fields for sellers
    shipping_address = models.CharField(max_length=100, blank=True)

您还需要根据用户的角色处理权限和访问控制。例如,只有卖家才能访问特定于卖家的功能,例如管理产品和查看其他卖家的个人资料。


0
投票

如果它们都共享相同的数据字段,那么这可能是最简单的方法。如果捕获不同的数据,我只会推荐多个用户模型。在这种情况下,您可以扩展用户模型

© www.soinside.com 2019 - 2024. All rights reserved.