如何通过模型访问django m2m self

时间:2014-10-31 18:10:42

标签: django has-many-through self m2m

这是我的模特:

class Store_product(models.Model):
    breakdown_lst = models.ManyToManyField('self',symmetrical=False,through='Kit_breakdown_assoc',related_name='kit_lst')

class Kit_breakdown_assoc(models.Model):
    kit = models.ForeignKey(Store_product,related_name='breakdown_assoc_lst')
    breakdown = models.ForeignKey(Store_product,related_name='kit_assoc_lst')
    qty = models.IntegerField()

我想做的是:

sp = Store_product.objects.get(pk=sp_id)
sp.kit_breakdown_assoc_set.all() --> error: 'Store_product' object has no attribute 'kit_breakdown_assoc_set'

Django文件提到了一条规则'那个m2m与一个' self'不会将xxx_set属性添加到类中。我认为我的案例只是这个规则的一个特例'因为它有一个中间模型。我发现不能访问我的相关经理是不方便的。我是否会遗漏某些内容或者可以实施此功能?

1 个答案:

答案 0 :(得分:0)

问题是,由于您已正确指定了相关名称breakdown_assoc_lstsp.kit_breakdown_assoc_set无法访问您的中间模型管理员,而sp.breakdown_assoc_lst无法访问您的中间模型管理器用相关名称指定。