Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中定义泛型模型时解决循环依赖_Python_Django_Generics_Django Models - Fatal编程技术网

Python 如何在django中定义泛型模型时解决循环依赖

Python 如何在django中定义泛型模型时解决循环依赖,python,django,generics,django-models,Python,Django,Generics,Django Models,我想定义一个通用模型,可以在任何应用程序中使用。以下是我的通用模型的定义:- User = settings.AUTH_USER_MODEL # This mixin is used to track the user, who has created this object. class OwnedModel(models.Model): owner = ForeignKey(to=User, null=True, editable=False)

我想定义一个通用模型,可以在任何应用程序中使用。以下是我的通用模型的定义:-

User = settings.AUTH_USER_MODEL
#  This mixin is used to track the user, who has created this object.
class OwnedModel(models.Model):
       owner           = ForeignKey(to=User, null=True, editable=False)

      class Meta:
            abstract    = True

#   AreaOrVillage extending this model, will also get owner field, which
#   refer to User.
class AreaOrVillage(OwnedModel):

    area_village_name   = LocationIdentifierField(name="areaOrVillageName", verbose_name="Area/Village:", blank=False, null=False)
    area_village_code   = LocationCodeField(name="areaOrVillageCode", verbose_name="Area/Village Code", null=True, blank=True)
    zipcode             = ZipCodeField(verbose_name="ZipCode", null=False, blank=False)
    #  It's another model, referred by this model
    tehsil              = models.ForeignKey(to=Tehsil, related_name="areas_or_villages")

    class Meta:
        verbose_name_plural = "Areas/Villages"
        unique_together     = ("tehsil", "areaOrVillageName")
        ordering            = ("tehsil", "areaOrVillageName")
        app_label           = 'location_app'

    def __str__(self):
        text                = self.to_str()
        return "{}{}{}".format(text, ", " if text and self.tehsil else "",
                               self.tehsil.__str__() if self.tehsil else "")

    def to_str(self):
        return "%s" %(self.areaOrVillageName or self.areaOrVillageCode)
现在,在我的django项目中,我覆盖了默认用户模型,如下所示(它使用了上面定义的通用模型):-

现在,它引入了循环依赖问题,因为泛型模型依赖于用户,为了跟踪它们的创建者,用户定义也使用泛型模型,因此针对db运行迁移会带来问题

django.db.utils.ProgrammingError: relation "users_pss_user" does not exist
有没有更好的办法来解决这个问题


提前感谢。

外键中的
to
字段:

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身:

(增加重点)

例如,从代码中,可以执行以下操作:

user_village = ForeignKey(to='AreaOrVillage', null=False, related_name="gram_vasi")

在所有
ForeignKey
字段上使用该语法,您将避免任何循环引用。

这给了我一个错误:users.PSS\u User.User\u village:(fields.E300)字段定义了与未安装的模型“AreaOrVillage”的关系,或者是抽象的。您是否对所有
ForeignKey
字段都使用了此语法?是的,我对ForeignKey使用了此语法。顺便说一句,应用程序名也必须包括在内,所以,我在ForeignKey()的参数中设置了'appname.modelname'
user_village = ForeignKey(to='AreaOrVillage', null=False, related_name="gram_vasi")