Django - model.py 中的 forloop 分配外键
Django - forloop in model.py to assign foreignkey
我有两个模型 - 用户和排名。在 def save() 期间,我希望根据用户拥有的点数和排名模型中的 min_points 自动将用户排名分配给排名。
型号
class User(AbstractUser):
points = models.IntegerField(default=0)
rank = models.ForeignKey(Rank, on_delete=models.SET_NULL, null=True, blank=True)
class Rank(models.Model):
rank = models.CharField(max_length=200)
min_points = models.IntegerField()
现在我向用户模型添加了 save() 函数来检查用户点数并与正确的排名进行比较
# ...user model
def save(self, *args, **kwargs):
for i in Rank.objects.all():
if self.points >= i.min_points:
self.rank == Rank.objects.get(id=i.id)
super().save(*args, **kwargs)
不幸的是,保存或创建新用户后没有任何反应。
我的 IDE 抛出警告:
未解析的属性引用 'objects' class 'Rank'
我错过了什么吗?我无法弄清楚问题...
无需枚举 Rank
个对象。我们可以检索 Rank
的最大数量 min_points
小于或等于 self.points
的
def save(self, *args, **kwargs):
self.rank = Rank.objects.filter(
<strong>min_points__lte=self.points</strong>
)<strong>.latest('min_points')</strong>
return super().save(*args, **kwargs)
我有两个模型 - 用户和排名。在 def save() 期间,我希望根据用户拥有的点数和排名模型中的 min_points 自动将用户排名分配给排名。
型号
class User(AbstractUser):
points = models.IntegerField(default=0)
rank = models.ForeignKey(Rank, on_delete=models.SET_NULL, null=True, blank=True)
class Rank(models.Model):
rank = models.CharField(max_length=200)
min_points = models.IntegerField()
现在我向用户模型添加了 save() 函数来检查用户点数并与正确的排名进行比较
# ...user model
def save(self, *args, **kwargs):
for i in Rank.objects.all():
if self.points >= i.min_points:
self.rank == Rank.objects.get(id=i.id)
super().save(*args, **kwargs)
不幸的是,保存或创建新用户后没有任何反应。
我的 IDE 抛出警告: 未解析的属性引用 'objects' class 'Rank'
我错过了什么吗?我无法弄清楚问题...
无需枚举 Rank
个对象。我们可以检索 Rank
的最大数量 min_points
小于或等于 self.points
的
def save(self, *args, **kwargs):
self.rank = Rank.objects.filter(
<strong>min_points__lte=self.points</strong>
)<strong>.latest('min_points')</strong>
return super().save(*args, **kwargs)