如何隐藏django表单中的列并设置外键值

时间:2017-11-13 18:36:07

标签: python html django forms

我想在html页面中隐藏列bh,所以我在forms.py中通过exclude隐藏它,并尝试在视图中使用request.user.username设置外键列bh,但它给了我这个错误: 无法指定“]>”:“Bed.bh”必须是“医院”实例。

有没有办法解决这个问题。请帮忙!

`#forms.py

class BedForm(forms.ModelForm):
class Meta:
    model=Bed
    fields = ('bed_id','bed_type','created_date','bh',)
    exclude=('bh',)

if request.method == "POST":
    form = BedForm(request.POST)
    if form.is_valid():
            bed = form.save(commit=False)
            bed.created_date = timezone.now()
            hh = Hospital.objects.filter(hospital_id=request.user.username)
            bed.bh=hh
            bed.save()
            b = Bed.objects.filter(bh=request.user.username)

`

1 个答案:

答案 0 :(得分:0)

这是因为Hospital.objects.filter()正在返回QuerySet,而不是Hospital的实例。

你想要这样的东西:

hh = Hospital.objects.filter(hospital_id=request.user.username)[0]

hh = Hospital.objects.get(hospital_id=request.user.username)

在这两种情况下,您都必须在检索对象之前检查对象是否存在,或者捕获异常,然后确定下一步该做什么。