我有django.contrib.contenttypes.generic.genericForeignKeyField作为模型的成员,

但是,当我实例化模型然后尝试从对象的_meta中获取字段时,它不会出现。

例如:

class A(models.Model):
    field2 = models.IntegerField(...)
    field1 = generic.genericForeignKeyField()

a = A()
a._meta.fields   ---> this does not show field1, but shows field2.


有人可以告诉我为什么吗?

谢谢 !

最佳答案

您没有正确建立通用关系。阅读documentation


  设置GenericForeignKey分为三个部分:
  
  
  给您的模型ForeignKeyContentType
  给您的模型一个字段,该字段可以存储您将要关联的模型中的主键值。 (对于大多数型号,这表示IntegerFieldPositiveIntegerField。)
   该字段的类型必须与将在通用关系中涉及的模型的主键相同。例如,如果您使用IntegerField,将无法与使用CharField作为主键的模型形成通用关系。
  给您的模型一个GenericForeignKey,并为其传递上述两个字段的名称。如果这些字段分别命名为“ content_type”和“ object_id”,则可以忽略这些-这些是GenericForeignKey将查找的默认字段名称。
  


最后,它必须类似于:

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')

关于python - Django models.Model类成员未出现在model_instance._meta.fields中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3096040/

10-09 02:03