Python 如何在Django中创建和使用自定义字段
我是django的新手,在django中构建了一种基于包装运的应用程序,我有这些模型Python 如何在Django中创建和使用自定义字段,python,django,django-models,Python,Django,Django Models,我是django的新手,在django中构建了一种基于包装运的应用程序,我有这些模型 class ShippingLocation(models.Model): latitude = models.IntegerField() longitude = models.IntegerField() class Shipping (models.Model): email = models.EmailField() location = models.ForeignK
class ShippingLocation(models.Model):
latitude = models.IntegerField()
longitude = models.IntegerField()
class Shipping (models.Model):
email = models.EmailField()
location = models.ForeignKey(ShippingLocation , default=None, on_delete=models.CASCADE )
class Package(models.Model):
name = models.CharField(max_length=30)
supplier = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
to = models.ForeignKey(Shipping, default=None, on_delete=models.CASCADE )
这项工作目前还可以,但我想知道是否可以删除ShippingLocation模型,并使用自定义字段而不是Shipping模型中的location字段?如果是,如何创建自定义字段以及如何实现它们
所以我有点像
class Shipping (models.Model):
email = models.EmailField()
location = models.DictionaryField()
我去掉了ShippingLocationModel我猜您想将现有数据从ShippingLocation迁移到Shipping。如果您只是开发人员,只需删除sqlite3文件并根据您的期望更改模型 如果您已经在prod上,我通常会这样做: 不需要在Shipping中添加location\u字典字段。迁徙 编写一次性迁移逻辑,将ShippingLocation中的所有内容移动到location\u dictionary字段中 删除ShippingLocation模型 删除位置字段 重命名位置\u字典字段。。。 这应该是一项工作: 删除SQLite数据库 改变模式 然后运行migrate命令
自定义字段是什么意思?它会是什么样子?我刚刚编辑了这个问题,如果你正在使用Prosgres,这是一件好事,否则请检查一下。就我个人而言,我认为目前的方法是最好的,我知道这并不能回答你的问题,只是一些使用sqliteDjango的反馈支持jsonfield,但我不推荐。他的问题是关于他如何创建一个location\u dictionary字段,而不是关于迁移将如何进行如果他已经知道自定义字段,他将知道如何创建它,因为他的用例很简单。显然你不知道,因为我可以从你的问题中看出,自定义字段是什么意思?它看起来像什么?看问题的标题。另外,这与我知道什么或不知道什么无关,只是想确保他了解他想做什么……他的问题是创建一个字典字段,而不是如何运行migrate命令。仅供参考,您不应删除任何数据库。正确的过程应该是进行更改、运行makemigrations和运行migrate而不删除任何内容。迁移的全部目的是能够在不丢失任何数据的情况下更改db模式。