python从模型mixin中获取多对多返回无

时间:2018-02-27 14:20:07

标签: python django django-models django-queryset

我有一个模特:

class Employee(models.Model, MyMixin):
    full_name = models.CharField(max_length=255)
    items = models.ManyToManyField(Item, blank=True)

和mixin类:

class MyMixin(object):

    def my_m2m(self, field):
        field_value = getattr(self, field)
        print(field_value)
        // do something with many to many field

emp = Employee()
emp.my_m2m("items")

在控制台上打印employee.Item.None时,它会给我emp.my_m2m("items") 的结果。

如果我emp.items.all()它会给我结果,但我无法按名称得到它。

为什么不给出与之关联的项目列表?

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

正如您所说,添加.all()会得到结果,因此您需要将其添加到动态查找中:

field_value = getattr(self, field).all()