【发布时间】:2020-08-17 18:35:55
【问题描述】:
我有以下型号:
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=32)
last_name = models.CharField(max_length=32)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(default=timezone.now)
USERNAME_FIELD = 'email' # unique identifier, changed to email (default was username)
REQUIRED_FIELDS = ['first_name', 'last_name']
objects = CustomUserManager() # custom manager for interacting with database
def __str__(self):
return self.email
class Refer(models.Model) :
referred_by = models.ForeignKey(CustomUser, on_delete=models.CASCADE, default='admin', related_name='referred_by')
referrals = models.ManyToManyField(CustomUser, related_name='referrals', blank=True)
unique_ref_id = models.CharField(max_length=8, blank=True, default=generate())
def __str__(self) :
return f'Referred By: {self.referred_by}'
我想使用这个实现推荐系统,我有 unique_for_id 字段(例如“exbvagtl”),我如何在该用户下创建新推荐?
类似:Refer.objects.create(referred_by= CustomUser.objects.get(Refer__unique_ref_id='exbvagtl'))
我们非常欢迎更好的模型设计、资源和改进!
【问题讨论】:
-
这是
unique_for_id唯一的per 用户,还是per 参考? -
对不起,它是 unique_ref_id 的错误,我认为这对两者都是唯一的? (因为他们有 OneToOne 关系)
-
这里多个
Refers可以引用相同User作为refferred_by。 -
是的,我对如何设计模型架构感到困惑,这样每个用户都有 unique_ref_id 如果创建了任何其他用户,那么新用户将被放置在引用用户的推荐之下(即指向 unique_ref_id)
-
一个用户可以有多个
referred_bys吗?还是只有一个?
标签: django django-models django-queryset django-3.0 django-q