好的我知道标题听起来真的很混乱,但实际上它很简单。考虑一下:
class A(models.Model):
field = models.CharField(max_length=10)
class B(models.Model):
field = models.CharField(max_length=10)
a_elements = models.ManyToManyField(A)
class C(models.Model):
field = models.CharField(max_length=10)
b_element = models.ForeignKey(A)
所以,现在我想要的是用其他字段扩展A的所有实例。例如,对于通过B可用的A的每个实例,我需要一个与之关联的整数。
有一种简单的方法吗?
编辑:
我认为可以将此视为B中A从C到实例的一对多关系的定义,如果这有意义的话......
答案 0 :(得分:0)
如果您需要使用其他字段扩展A的所有实例,请添加另一个字段。
对于每个A到B都需要字段的示例场景,请使用直通模型。
http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships
class A(models.Model):
field = models.CharField(max_length=10)
class B(models.Model):
field = models.CharField(max_length=10)
a_elements = models.ManyToManyField(A, through='B_A')
class C(models.Model):
field = models.CharField(max_length=10)
b_element = models.ForeignKey(A)
class B_A(models.Model):
"""
Custom through model for B.a_elements
"""
a = models.ForeignKey(A)
b = models.ForeignKey(B)
integer = models.IntegerField()
b = B.objects.latest('id')
ab_elements = B_A.objects.filter(b=b).select_related()
# these are your m2m intermediary model instances,
# which are essentially A instances with an extra field.
for ab in ab_elemements:
print ab.a # a element
print ab.integer # integer associated with this a element.
通过你的问题标题,我认为你问了一个关于C的问题(你没有提到)