![](/img/trans.png)
[英]Change type of Django model field from CharField to ForeignKey
[英]Django model foreignkey or charfield?
你好。 我是 Django 的新手,我很難理解要使用哪個 model 字段。 我沒有發布任何代碼,因為我的代碼現在太亂了,而且大部分代碼仍然遵循 William S. Vincent 的“Django for Beginner”一書。
我有一個包含 2 個模型的應用程序, Product
model 和Production
model。生產 model 上的某些字段鏈接到產品 model。然后從生產 model,我使用ModelForm
為用戶輸入制作了一個表格。 (這里有一個圖像鏈接,可以幫助理解 model 並形成關系。)
關於這件事,我有幾個問題。
Production
Model 上的product_id
設置為Product
的ForeignKey
,我應該為product_name
和material
使用什么字段?product_name
material
CharField
product_name
material
我不希望這樣。 如何將其更改為只讀並根據product_id
更新值? (我不確定這是否與 Django 表格有關。)ModelForm
制作Production
表單,然后使用FormView
呈現表單。 這是正確的方法嗎? 這個和model的CreateView
有什么區別?提前感謝您的任何評論和回答。
如果您有產品 model 的名稱和材料,則不需要生產 model 上的名稱和材料,除非它們與生產 object 相關。如果我是你,我會在產品Production
上有一個外鍵。 它可能看起來像;
class Production(models.Model):
product = models.ForeignKey(
to=Product,
verbose_name=_("Product"),
on_delete=models.CASCADE
)
machine = models.CharField(
verbose_name=_("Machine No"),
max_length=255
)
date = models.DateTimeField(
verbose_name=_("Date"),
blank=True,
null=True
)
那么你的表格可能是;
class ProductionForm(forms.ModelForm):
class Meta:
model = Production
fields = (
'product',
'machine',
'date',
)
我建議在開始使用視圖之前使用 django 管理員來獲取您想要的模型。 如果您知道數據以您需要的方式存儲,那么您就可以擔心構建前端。 管理員在您所擁有的那本書的第 70 頁左右。 您也可以用它做只讀字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.