我想使用字典通過模型表單和視圖將值存盤在模型中。今天我是這樣解決的:
form.variable_1 = dictionary['variable_1']
form.variable_2 = dictionary['variable_2']
form.variable_3 = dictionary['variable_3']
form.variable_4 = dictionary['variable_4']
form.variable_5 = dictionary['variable_5']
form.variable_6 = dictionary['variable_6']
字典中的鍵與我要存盤的值的欄位名稱相同。我想讓這個函式更像pythonic - 像這樣:
for field in form:
form.field = dictionary['field']
但是,我不確定如何使用 Django ORM 來實作這一點。我想迭代的欄位在欄位串列中編號為 3-28,所以我想我必須以某種方式對欄位進行切片并基于此創建一個串列?
編輯:
模型.py
class MyModel(Model):
user = ForeignKey(settings.AUTH_USER_MODEL, on_delete=CASCADE)
Instance_name = CharField(max_length=200, default='')
Instance_text = TextField(default='')
variable_1 = IntegerField(null=True)
共有 30 個變數,例如變數 1 跟隨它。
表格.py:
class MyModelMF(ModelForm):
class Meta:
model = MyModel
fields = [
'Instance_name',
'Instance_text'
]
widgets = {
'Instance_text': Textarea(attrs={"style": "height:4em;" "width:25em;"})
}
views.py(直到迭代開始,為簡單起見排除回傳渲染等)
def create_instance(request):
form = MyModelMF()
if request.method == 'POST':
form = MyModelMF(request.POST)
if form.is_valid()
form = form.save(commit=False)
form.user = request.user
form.variable_1 = scores_dict['variable_1']
uj5u.com熱心網友回復:
您可以使用內置函式setattr按名稱設定實體的屬性。迭代字典中的鍵和值,并在呼叫時使用鍵作為屬性名稱setattr
if form.is_valid()
form = form.save(commit=False)
form.user = request.user
for field_name, value in scores_dict.items():
setattr(form, field_name, value)
form.save()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361113.html
標籤:Python 姜戈 django 模型 django-orm
