有一种方法可以使用RelatedObject
在Django中定义多列关系。
但是,如果源列之一不是本地列,则无法定义多列关系。在我的特殊情况下,它是另一个表(另一个联接)中的相关字段,但我可以想象它可以是任何表达式。
示例:
class A(models.Model):
a_value = models.IntegerField()
class B()
key1 = models.IntegerField()
key2 = models.IntegerField()
b_value = models.IntegerField()
class Meta:
unique_together = (('key1', 'key2'),)
class C()
a = models.ForeignKey(A)
c_value = models.IntegerField()
b = models.RelatedObject(
B,
from_fields=('a__a_value', 'c_value'), # <<< note the __
to_fields=('key1', 'key2'),
)