Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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_Django Models - Fatal编程技术网

Python 如何在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

我是django的新手,在django中构建了一种基于包装运的应用程序,我有这些模型

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模式。