【发布时间】:2018-11-17 05:01:41
【问题描述】:
models.py
在这里创建您的模型。
class DeviceType(models.Model):
device_type = models.CharField(max_length=200,unique=True)
class Repair(models.Model):
device_type = models.ForeignKey(DeviceType,to_field='device_type')
submitted_by = models.ForeignKey(User,to_field='username')
comments = models.TextField()
repair_request_date = models.DateField(default=datetime.now)
repair_status = models.ForeignKey(RepairStatus, to_field="repair_status", null=True)
repair_cost_estimate = models.FloatField(null=True)
views.py
def repair_form(request):
dlist = get_my_choices(request.user)
if request.method == "POST":
form = RepairForm(request.POST,device_type = dlist, submitted_by = request.user)
#print(form)
if form.is_valid():
print("Inside repair form")
post = form.save(commit=False)
post.submitted_by = request.user
print(post.pk)
post.save()
return redirect("RepairRequest")
else:
dlist = get_my_choices(request.user)
print("Inside else of repair form")
form = RepairForm( device_type = dlist, submitted_by = request.user)
print("else form: ", form)
return render(request, "Form_template.html", {"form": form,\
"name": "Repair Request Form"})
forms.py
class RepairForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
print("kwargs: ",kwargs)
dlist = kwargs["device_type"]
print("Inside init of RequestForm")
super(RepairForm, self).__init__(*args, **kwargs)
self.fields["device_type"] = forms.ChoiceField(choice = [dlist])
self.fields["submitted_by"] = kwargs["submitted_by"]
class Meta:
print("Inside Meta of RepairForm")
model = Repair
print("model: ", model)
fields = "__all__"
print("fields: ", fields)
exclude = ("repair_cost_estimate","repair_status","submitted_by","repair_request_date",)
我正在尝试在 django 表单中创建一个动态下拉列表。从下拉列表将仅填充与给定用户关联的数据的意义上说是动态的。就我而言,每个用户都可能随身携带一台笔记本电脑、鼠标等。我已经编写了上面显示的代码。每次执行代码时都会出现以下错误:
TypeError at /user_dashboard/RepairRequest.html
__init__() got an unexpected keyword argument 'submitted_by'
Request Method: GET
Request URL: http://127.0.0.1:8000/user_dashboard/RepairRequest.html
Django Version: 1.11.13
Exception Type: TypeError
Exception Value:
__init__() got an unexpected keyword argument 'submitted_by'
Exception Location: E:\inventory management\inventory_management_service\inventory_management_app\forms.py in __init__, line 15
Python Executable: C:\Anaconda2\python.exe
Python Version: 2.7.14
Python Path:
['E:\\inventory management\\inventory_management_service',
'C:\\Anaconda2\\python27.zip',
'C:\\Anaconda2\\DLLs',
'C:\\Anaconda2\\lib',
'C:\\Anaconda2\\lib\\plat-win',
'C:\\Anaconda2\\lib\\lib-tk',
'C:\\Anaconda2',
'C:\\Users\\Jaimik Jain\\AppData\\Roaming\\Python\\Python27\\site-packages',
'C:\\Anaconda2\\lib\\site-packages',
'C:\\Anaconda2\\lib\\site-packages\\win32',
'C:\\Anaconda2\\lib\\site-packages\\win32\\lib',
'C:\\Anaconda2\\lib\\site-packages\\Pythonwin',
'C:\\Anaconda2\\lib\\site-packages\\pywinpty-0.5-py2.7-win-amd64.egg']
Server time: Thu, 7 Jun 2018 09:56:44 +0000
我最早请求您的帮助。
【问题讨论】:
-
在调用
super().__init__之前,您应该先popsubmitted_by。 -
我弹出了这些值,但是,我收到了这个错误,“/user_dashboard/RepairRequest.html __init__() 的 TypeError 得到了一个意外的关键字参数 'choice'”。可能是什么原因? @WillemVanOnsem
标签: django django-models django-forms