首页 > 解决方案 > 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 = TrueStatusHasCourse

标签: django

解决方案


您可以使用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)

推荐阅读