Как сделать так, чтобы пользователь выступал в роли продавца и покупателя одновременно в 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