[英]How to set form field default value without showing the field in django forms?
[英]how to set a default value in Django forms?
在数据库中有 class Borrowing 其中包含将借用 item 和 tag_id (item) 和subscriber_id 的employee_id
在我的代码中,如果员工请求借款,他可以选择subscriber_id。 我需要将subscriber_id 设置为1,甚至不要求员工选择。
在 models.py 文件中
class Borrowing(models.Model):
borrowing_id = models.IntegerField(null=True)
start_date = models.DateField(auto_now_add=True, null=True)
end_date = models.DateField(null=True)
employee_id = models.ForeignKey(Employee, null=True, on_delete= models.SET_NULL)
tag_id = models.ForeignKey(Tag, null=True, on_delete= models.SET_NULL)
subscriber_id = models.ManyToManyField(Subscriber)
def __str__(self):
return str(self.borrowing_id)
在 forms.py 文件中
class BorrowingForm(ModelForm):
class Meta:
model = Borrowing
fields = ['end_date', 'employee_id', 'tag_id', 'subscriber_id']
在views.py中
def createBorrowing(request, pk):
BorrowingFormSet = inlineformset_factory(Employee, Borrowing, fields=('end_date','tag_id','subscriber_id'))
employee = Employee.objects.get(id=pk)
formset = BorrowingFormSet(queryset=Borrowing.objects.none(), instance=employee)
if request.method == 'POST':
formset = BorrowingFormSet(request.POST, instance=employee)
if formset.is_valid():
formset.save()
return redirect('/login')
context = {'formset':formset}
return render(request, 'assetstracking/createBorrowing.html', context)
您必须在 Models.py 中设置默认值
class Borrowing(models.Model):
...
subscriber_id = models.ManyToManyField(Subscriber, default=default_subscriber)
...
def __str__(self):
return str(self.borrowing_id)
如果您不需要员工选择,您可以从 forms.py 中的字段中删除subscriber_id
请注意,default_subscriber 必须是订阅者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.