Модель отношений многих ко многим на Django - PullRequest
1 голос
/ 03 ноября 2019

У меня есть две таблицы: «Пользователь» и «Курсы», и я хочу показать отношения между ними, реализовав модель отношений «многие ко многим». Я хочу реализовать в общей сложности 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?

1 Ответ

1 голос
/ 03 ноября 2019

Вы можете использовать параметр limit_choices_to=… [Django-doc] , чтобы указать, как ограничить выбор. Таким образом, в этом конкретном случае мы можем использовать Q -объект [Django-doc] , который указывает is_status=True:

from django.db.models import Q

class StatusHasCourse(models.Model):
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        <b>limit_choices_to=Q(is_status=True)</b>
    )
    course = models.ForeignKey(Courses, on_delete=models.CASCADE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...