我需要为默认的django用户表设置一个manytomany
关系。有什么方法可以实现它,而不是使用django的AbstractUser
方法?
(扩展用户模型)?
答案 0 :(得分:1)
您应该使用Django的get_user_model()
function [Django-doc],如文档中所指定:
您应该而不是直接引用
User
,而应使用django.contrib.auth.get_user_model()
。此方法将返回当前活动的用户模型-自定义用户模型(如果已指定),否则返回User
。
即使您正在使用Django的默认用户模型,也最好使用get_user_model
,因为如果您以后改变主意,则可以更改AUTH_USER_MODEL
setting [Django-doc],并且对用户模型的引用将进行更新。
例如:
from django.db import models
from django.contrib.auth import get_user_model
class SomeModel(models.Model):
users = models.ManyToManyField(get_user_model())
使用AbstractUser
不会有效,因为这是一个抽象模型,并且不会引用您使用的用户模型。
此外,如果您想使用Django的内置AbstractUser
模型,则不必 自己继承User
。如果希望自己定义用户模型,则可以将AbstractUser
子类化。
答案 1 :(得分:0)
您无需扩展默认的Django User表即可与其建立多对多关系。
将多对多关系添加到正在创建的模型中,Django将在后台创建第三个表,该表使用对每个对象使用ForeignKey来存储关系。