我与模型Vehicle和Accounts有一个ManyToMany关系,还有一个Assignment的关联实体,它将两个表的PKs都作为FK.
现在,Accounts表有一个is_driver字段,该字段采用布尔值,因为默认情况下,所有帐户都是通勤者,但有些帐户可以是driver。
有没有办法将我的模型设置为只筛选Is_driver==True的帐户?
我的型号.py
class Puv(models.Model):
plate_number = models.CharField(max_length=50, unique=True)
temporary_plate = models.BooleanField(default=True)
route = models.ForeignKey(Route, on_delete=models.CASCADE, blank=True, null=True)
class Assignment(models.Model):
driver = models.ForeignKey(User, on_delete=models.CASCADE)
puv = models.ForeignKey(Puv, on_delete=models.CASCADE)
assignment_date = models.DateField(auto_now_add=True)
用户模型在一个单独的应用
class User(AbstractBaseUser, PermissionsMixin):
....
is_driver = models.BooleanField(default=False)
您可以使用limit_choices_to=…
参数[Django doc]:
class Assignment(models.Model):
driver = models.ForeignKey(
User,
on_delete=models.CASCADE,
limit_choices_to={'is_driver': True}
)
puv = models.ForeignKey(Puv, on_delete=models.CASCADE)
assignment_date = models.DateField(auto_now_add=True)
这不会由数据库强制执行,而是由ModelForm
和ModelAdmin
进行检查。
注意:通常使用
settings.AUTH_USER_MODEL
[Django-doc]来引用用户模型比直接使用User
模型[Django-dc]更好。有关更多信息,请参阅文档中引用User
模型的部分。