簡體   English   中英

如何在 Django 中創建和使用自定義字段

[英]How do can I creating and use a custom fields in Django

我是 django 的新手,並且在 Django 中構建了一種基於 package(發貨)的應用程序,我有這些模型,

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 model 並使用自定義字段而不是 Shipping model 中的位置字段? 如果是,我如何創建自定義字段以及如何實現它們?

所以我有類似的東西

class Shipping (models.Model):
    email = models.EmailField()
    location = models.DictionaryField()

我擺脫了ShippingLocationModel

我猜您想將現有數據從 ShippingLocation 遷移到 Shipping。 如果您只是在開發,只需刪除您的 sqlite3 文件並根據您的期望更改您的模型。

如果您已經在生產,我通常會這樣做:

  1. 在 Shipping 中添加 location_dictionary 字段(非必需)。 遷移
  2. 編寫一次性遷移邏輯,將 ShippingLocation 中的所有內容移動到 location_dictionary 字段中
  3. 刪除 ShippingLocation model
  4. 刪除位置字段
  5. 重命名 location_dictionary 字段...

這應該是工作:

  1. 刪除 SQLite 數據庫
  2. 更改 model
  3. 然后運行遷移命令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM