我有这样的:如何获取ForeignKey字段而不是Django中的相关对象?
Class A(models.Model):
name = models.CharField(max_length=50)
Class B(models.Model):
a = models.ForeignKey(A)
class C(models.Model):
a = models.ManyToManyField(A)
当我需要的属性a
在C
对象:
related_manager = getattr(object_c,'a')
,这给我一个ManyRelatedManager
但问题是,当我需要的属性a
在B
的对象:
object_b2 = getattr(object_b,'a')
这给了我一个对象t的类B和我需要知道如果是一个ForeignKey或ManyToManyField,我的意思是,我需要getattr(东西,'some_attribute'),并得到模型。*不是自我的对象。
如果你'getattr(object_c,'a')''你真的得到了类B的对象吗?我期望得到Class ** A **的对象。 – 2010-02-11 21:03:34
是的,这确实发生。试一试。在ManyToMany getattr为您提供管理器,就像如果您调用object.my_many_to_many_field ...您仍然必须调用.get()或.all()以从中获取对象。 – 2010-02-11 21:27:44
@Felix,它不是B类的对象,它是管理器:。 getattr与object_c.a和object_b.a的工作方式相同。 –
Dingle
2010-02-12 19:52:24