Как сделать так, чтобы пользователь выступал в роли продавца и покупателя одновременно в Django?

У меня есть сценарий, в котором я хочу зарегистрировать пользователя, но мне нужно, чтобы пользователь был зарегистрирован как продавец и покупатель одновременно после регистрации. и чтобы пользователь мог продавать и покупать товары, не выходя из системы и не регистрируясь отдельно как покупатель или продавец.

Я знаю подход, чтобы сделать это с помощью кортежей, но он не подходит для решения моей проблемы и приведен ниже:

class User(models.Model):
    USER_ROLES = (
                 ('SELLER', 'Seller'),
                 ('Buyer', 'Buyer'),
                  )
    user_type = models.CharField(max_length = 10, choices = USER_ROLES)

Я также думаю сделать это следующим образом:

class User(models.Model):
        USER_ROLES = (
                     ('BOTH_USERS', 'Seller Buyer'),
                      )
        user_type = models.CharField(max_length = 10, choices = USER_ROLES)

Я не уверен, как это сделать. Может ли кто-нибудь из вас помочь мне, пожалуйста?

Надеюсь, это имеет какой-то смысл, что я хочу получить в результате.

class CustomUser(AbstractUser):
    is_customer = models.BooleanField(default = False)
    is_seller = models.BooleanField(default = False)

class Customer(models.Model):
    buyer = models.OneToOneField(CustomUser, on_delete= models.CASCADE)
    address  = models.TextField()

class Seller(models.Model):
    seller = models.OneToOneField(CustomUser, on_delete= models.CASCADE)
    store = models.CharField(max_length = 90)

Вы можете использовать этот подход и заблокировать доступ покупателя или продавца с помощью декораторов. Я использовал этот метод для создания своего сайта.

Система аутентификации Django предоставляет возможность делегировать пользователей в группы с правами доступа.

Интерфейс администратора справляется с этим очень гладко

Вы, конечно, можете достичь того же результата программно .

Затем, в вашем представлении, вы можете проверить, есть ли у вошедшего пользователя разрешение на добавление нового объекта в модель Product приложения sell:

from django.contrib.auth.decorators import login_required

@login_required
def create_sale_view(request):
   if request.user.has_perm("sell.add_product"):
       # The user can add a new product for sale
   else:
       # The user cannot add a new product for sale
Вернуться на верх