Django上的多对多关系模型

时间:2019-11-03 19:46:42

标签: django

我有两个表,分别称为“用户”和“课程”,我想通过实现多对多关系模型来显示它们之间的关系。我想总共实现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的{​​{1}}之间的关系?

1 个答案:

答案 0 :(得分:1)

您可以使用limit_choices_to=… parameter [Django-doc]来指定如何限制选择。因此,在这种特定情况下,我们可以使用指定is_status=True的{​​{3}}:

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)