我需要在settings.py中更新AUTH_USER_MODEL吗?

时间:2018-02-01 03:14:17

标签: python django

我正在创建自己的用户RestaurantCustomer。我扩展了AbstractUser类,然后为每个用户创建了一个OneToOneField字段。我想知道是否需要在AUTH_USER_MODEL中添加settings.py。并且还想知道那究竟是什么......

我打算做的是添加到我的settings.py:
 AUTH_USER_MODEL = 'myapp.Customer','myapp.Restaurant'

我在这里有正确的想法吗?

我的models.py:

class User(AbstractUser):
    is_restaurant = models.BooleanField(default=False)
    is_customer = models.BooleanField(default=False)


class Restaurant(models.Model):
    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
    restaurant_name = models.CharField(max_length=50)

    def __str__(self):
        return self.restaurant_name


class Customer(models.Model):
    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
    address = models.CharField(max_length=200)

    def __str__(self):
        return self.user.get_full_name()

2 个答案:

答案 0 :(得分:0)

我建议创建单个用户表而不是三个不同的表,并添加类型为餐厅,客户,管理员等。并且只在设置文件中添加一个表。这不会导致任何进一步的问题认证等。拥有单个用户表始终是健壮的。在你的情况下,有三个表似乎不好维护。

==========更新===========

为名为CustomUser的用户创建模型(或您感觉更好的名称),并使用AbstractBaseUser,PermissionsMixin扩展到Django的用户模型。喜欢 class CustomUser(AbstractBaseUser):包含用户表已经存在的所有字段。并将您想要的表添加到bifurcate类型的餐厅和 客户有类型字段和选项选项。

如需进一步的帮助,请查看https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#substituting-a-custom-user-model

部分

答案 1 :(得分:0)

没有。 AUTH_USER_MODEL并不期待一个元组,所以这不会起作用。

在任何情况下,餐厅和客户都不是您的用户模式;您的子类用户是。这就是你应该在那个环境中投入的东西。