Skip to main content
 首页 » 编程设计

python之定义 Django 模型约束

2024年08月12日54bluestorm

我想在涉及对另一个模型对象的引用的模型上添加约束。 在下面的代码中,我希望在 ProjectMember 模型上将 project_member 字段限制为不同于项目模型中的 project_creator。

class User(models.Model): 
  fullname = models.CharField(max_length=200) 
  email = models.EmailField(max_length=254) 
  password = models.CharField(max_length=254) 
 
 
class Project(models.Model): 
  name = models.CharField(max_length=200) 
  timestamp = models.DateTimeField("date created", auto_now=True) 
  project_creator = models.ForeignKey(User, on_delete=models.CASCADE) 
 
 
class ProjectMember(models.Model): 
  project = models.ForeignKey(Project, on_delete=models.CASCADE) 
 
  project_member = models.ForeignKey( 
      User, 
      on_delete=models.CASCADE, 
      verbose_name="member of the project" 
  ) 
 
  class Meta: 
      order_with_respect_to = 'user_member' 
      constraints = [ 
          models.CheckConstraint(check= ,  
             name='project creator not project member'), 
      ] 

请您参考如下方法:

您可以像这样将它添加到 Q 对象中,

class Meta: 
  order_with_respect_to = 'user_member' 
  constraints = [ 
      models.CheckConstraint(check=~Q(project_member_id=project__project_creator_id) ,  
         name='project creator not project member'), 
  ] 

希望这对您有所帮助!