Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型:如何强制每个类实例的n个外键成员是唯一的?_Python_Django_Model - Fatal编程技术网

Python Django模型:如何强制每个类实例的n个外键成员是唯一的?

Python Django模型:如何强制每个类实例的n个外键成员是唯一的?,python,django,model,Python,Django,Model,Django模型:如何强制每个类实例的n个外键成员是唯一的 假设我有这个模型 class SomeClassA(models.Model): first = models.CharField(max_length=25, null=True, blank=False) last = models.CharField(max_length=25, null=True, blank=False) classChoice1 = models.ForeignKey(SomeCla

Django模型:如何强制每个类实例的n个外键成员是唯一的

假设我有这个模型

class SomeClassA(models.Model):
    first = models.CharField(max_length=25, null=True, blank=False)
    last = models.CharField(max_length=25, null=True, blank=False)
    classChoice1 = models.ForeignKey(SomeClassB, related_name='choice1')
    classChoice2 = models.ForeignKey(SomeClassB, related_name='choice2')
    classChoice3 = models.ForeignKey(SomeClassB, related_name='choice3')
实施/检查这三个“classChoice#”选项在每个项目中是唯一的正确方法是什么 某个类的实例

换句话说,如果为classChoice1、classChoice2、classChoice3选择的任何选项在它们之间不是唯一的,我如何防止输入

classChoice1 != classChoice2
classChoice2 != classChoice3
classChoice3 != classChoice1

阅读

执行您可以使用的自定义验证方法。您可以使用它自动为字段提供值,或者执行需要访问多个字段的验证,这是您的情况。您可以执行以下操作:

来自django.core.exceptions的
导入验证错误
从django.db导入模型
类SomeClassA(models.Model):
...
def清洁(自清洁):
如果len(set((classChoice1.id,classChoice2.id,classChoice3.id))<3:
raise ValidationError('classChoice[1,2,3]应具有不同的值')

这并不能回答我的问题。使用'unique_-together=(“classChoice1,“classChoice2”,“classChoice3”),`允许我只创建一个SomeClassA的实例,在整个SomeClassA集合中只有一个唯一的设置。我正在寻找一个解决方案,其中第n个SomeClassB的选项1-3对于SomeClassA的每个实例都是唯一的