Поле модели для автоматического хранения всех членов клуба - PullRequest
0 голосов
/ 30 октября 2019

Я создаю приложение для благотворительного клуба, в котором много разных пользователей, каждый из которых принадлежит одному клубу. Я хочу автоматически увеличивать поле «total_members» класса «Club_Chapter» каждый раз, когда пользователь регистрирует свою учетную запись для определенной школы (отсюда и внешний ключ пользователя «глава»).

models.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()

forms.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',)

Я знаю, что это швы, как тривиальная проблема, но я искал везде без удачи. Любой вклад будет высоко оценен для решения этой проблемы, очень поможет с другими аспектами этого проекта.

1 Ответ

0 голосов
/ 30 октября 2019

Я не уверен, что важно иметь автоматически увеличивающиеся поля total_members. Django обладает супер мощными возможностями запросов. Например, это будет прекрасно работать:

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

Обратите внимание, что я использовал двойное подчеркивание после главы для ссылки на определенное поле во внешнем ключе.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...