【问题标题】:How to add django model fields after definition定义后如何添加django模型字段
【发布时间】:2013-07-15 20:16:39
【问题描述】:

我有一个简单的 django 模型:

class Country(models.Model):
    name=models.CharField(max_length=500)
    iso_alpha3=models.CharField(max_length=3)

我需要在类初始化后添加一个新字段“default_city”。它已经添加到数据库中。如何做到这一点?

提前谢谢你

UPD:这就是我想要的:

class Country(models.Model):
    name=models.CharField(max_length=500)
    iso_alpha3=models.CharField(max_length=3)
    default_city=VerboseForeignKey(City,display_fields=["name"])

class City(models.Model):
    name=models.CharField(max_length=200)
    country=VerboseForeignKey(Country,display_fields=["name"])

但我不能这样做,因为我收到 NameError: name 'City' is not defined

【问题讨论】:

  • “初始化后”是什么意思?举个例子。
  • 您的意思是您手动将列添加到数据库中,现在想从模型中访问该列?
  • 您的意思是“default_city”是添加到国家/地区表中的另一列,但它不存在于模型中。现在您想将它添加到模型类中。我说的对吗?
  • 叹息。这是一个完全不同的问题,你应该一开始就提到,这里已经回答了很多次:例如见this answer
  • 解决方法一样:在FK中使用字符串,而不是类。

标签: python django django-models


【解决方案1】:

看来我最初的问题是循环外键,并且已经回答了类似的主题。

解决方案是为模型使用引号:

default_city=VerboseForeignKey('City',display_fields=["name"])

类似主题:

Django models.py Circular Foreign Key

Django App Dependency Cycle

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多