有沒有辦法使用變數更新模型實體中特定欄位的手動值?
例如。
模型.py
class ExampleModel(models.Model):
name=models.CharField(max_length=10)
a=models.CharField(max_length=10)
b=models.CharField(max_length=10)
c=models.CharField(max_length=10)
視圖.py
list=[a,b,c]
fruits=[orange,apple,banana]
values
def ExampleView(request):
model_instsnce=ExampleModel.objects.last()
for i in list:
instance_model.i=fruits[i]
model_instance.save()
在我的專案中,我嘗試使用類似上面的東西,但它不起作用。回圈中的 'i' 的行為不像變數。'i' 被視為模型中的一個新欄位。
知道如何使用變數來指定模型中的欄位以進行更改嗎?
uj5u.com熱心網友回復:
由于 Django 模型本質上只是物件,因此模型欄位只是屬性。因此,您可以簡單地使用 adict來映射要為模型更新的欄位值對,然后呼叫setattr以設定它們:
# store/get the model field-value pair data
fruits = {
'a': 'orange',
'b': 'apple',
'c': 'banana'
}
def ExampleView(request):
model_instance = ExampleModel.objects.last()
# update the model fields
for key, value in fruits.items():
setattr(model_instance, key, value)
model_instance.save()
我假設您也在動態獲取更新值,因此您必須為此調整上述代碼,但總的來說,我認為這解決了您問題的主要問題。
參考
- https://docs.djangoproject.com/en/3.2/topics/db/models/
- https://docs.python.org/3/library/functions.html#setattr
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367913.html
