[英]Is there is any way I can make filtering inside models in Django?
我創建自定義 Account 模型並添加視圖列,如is_student, is_teacher 。 所以我在另一個應用程序中創建了另一個類,所以我如何在模型中過濾類似的東西。
帳戶應用模型.py
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_student = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
objects = MyAccountManager()
主應用模型.py
from accounts.models import Account
a = Account.objects.filter(is_student=True)
class Students(models.Model):
student = models.ManyToManyField(a, on_delete=models.CASCADE)
我想要的是在學生表和帳戶之間建立關系
(只有那些 is_student = True)
甚至不要認為這是可能的。 表存在於數據之前。 所以你創建表,然后插入數據。 您可以決定在哪些數據之后插入。
並且不要將您的表格命名為復數: Students
這是一個解決方案:
class Student(models.Model):
# this means a student can have many accounts and an account can be linked with many students
account = models.ManyToManyField(Account, related_name="students", on_delete=models.CASCADE)
與許多學生關聯的帳戶可能不太好。
我會做:
class Student(models.Model):
# this means a student can only have one account and an account can only be linked with one student
account = models.OneToOneField(Account, related_name="student", on_delete=models.CASCADE)
如果您想獲得活躍用戶,只需在您的視圖中執行以下操作:
active_students = Student.objects.filter(account__is_active=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.