django - Django上的多对多关系模型
问题描述
我有两个名为 User 和 Courses 的表,我想展示它们之间的关系,我实现了一个多对多的关系模型。我想总共实现3个模型类:
# user/model.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
is_status = models.BooleanField(default=False)
is_newbie = models.BooleanField(default=False)
#courses/model.py
from django.db import models
from register.models import User
class Courses(models.Model):
course_name = models.CharField(max_length=100, null = False)
class StatusHasCourse(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
course = models.ForeignKey(Courses, on_delete=models.CASCADE)
我该如何实现这一点,以便仅在模型中访问它们之间User
的关系?is_status = True
StatusHasCourse
解决方案
您可以使用limit_choices_to=…
参数 [Django-doc]来指定如何限制选择。因此,在这种特定情况下,我们可以使用一个Q
-object [Django-doc]来指定is_status=True
:
from django.db.models import Q
class StatusHasCourse(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
limit_choices_to=Q(is_status=True)
)
course = models.ForeignKey(Courses, on_delete=models.CASCADE)
推荐阅读
- android - 如何使用android将信息写入mifare ultra light EV1 nfc卡?
- mysql - Windows EC2 实例上的 WAMP
- matlab - 非线性微分方程,如何用matlab数值求解?
- python - 混合图像而不改变颜色?
- javascript - React - 为什么当我更新状态的重组副本时状态对象会更新?
- javascript - 如何将图标设置在卡内必须存在的每张卡的底部,对于我的情况,它溢出并穿过一些卡?
- lda - 如何通过数学方程计算潜在狄利克雷分配(LDA)?
- c++ - 将结构传递给类构造函数
- c# - 使用具有多种类型的泛型注册存储库
c# dotnet core - c# - 如何为 SOAP 客户端证书关联 Crypto Service Provider (CSP) PIN 对话框?