用于自动存储俱乐部成员总数的模型字段

2024-05-16 05:43:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个慈善俱乐部开发一个应用程序,它有许多不同的用户,每个用户都属于一个俱乐部。每次用户为特定学校注册帐户时,我想自动增加类“Club\u Chapter”的“total\u members”字段(因此用户外键为“Chapter”)

型号.py

class Club_Chapter(models.Model):
    club_id = models.IntegerField(primary_key=True)
    school_name = models.CharField(max_length=30)
    state = models.CharField(max_length=4)
    total_members = models.IntegerField(null = False, default = 0)

    def __str__(self):
        return self.school_name

# User Model 
class User(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    USERNAME_FIELD  = 'email'
    chapter = models.ForeignKey('Club_Chapter',on_delete=models.PROTECT)
    ranking = models.CharField(default='member', max_length=20)
    REQUIRED_FIELDS = []
    objects = UserManager()

表单.py

class SignUpForm(UserCreationForm):
    first_name = forms.CharField(max_length=30, required=True)
    last_name = forms.CharField(max_length=30, required=True)
    email = forms.EmailField(max_length=254, required=True)
    chapter =  models.ForeignKey('Club_Chapter',on_delete=models.PROTECT)
    password2 = None

    # below is my failed attempt to solve this problem
    Club_Chapter.objects.update(total_members=F('total_members') + 1)

    class Meta:
        model = User
        fields = ('first_name', 'last_name', 
        'chapter','email', 'password1',)

我知道这是一个微不足道的问题,但我一直在到处寻找没有运气。任何输入将非常感谢这个问题的解决方案将大大有助于这个项目的其他方面


Tags: 用户nametruemodelsemaillengthmaxclass
1条回答
网友
1楼 · 发布于 2024-05-16 05:43:17

我不知道有一个自动递增的total_members字段有什么重要的。Django拥有超级强大的查询功能。例如,这将非常有效:

total_members = User.objects.filter(chapter__school_name="My Cool School").count()

注意,我在章节后面使用了双下划线来引用外键中的特定字段

希望这有帮助

相关问题 更多 >