繁体   English   中英

如何在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM