我有這樣的:如何獲取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