我尝试将objectl链接到当前基本对象的窗体(将其他对象从其模型中排除):
表单.py
class RoomTypeForm(ModelForm):
class Meta:
model = RoomType
fields = {'Name', 'Rooms', 'Beds', 'Facilities', 'Capacity'}
exclude = ('Building',)
def __init__(self, *args, **kwargs):
self.building_id = kwargs.pop('building_id')
self.fields['Capacity'].queryset = Capacity.objects.filter(
Building=self.building_id
)
视图.py
def building_details(request, hotel_id, building_id):
capacity_form = CapacityForm
roomtype_form = RoomTypeForm
args = {}
args.update(csrf(request))
args['building'] = Building.objects.get(id=building_id)
args['capacity'] = Capacity.objects.filter(Building=building_id)
args['roomtypes'] = RoomType.objects.filter(Building=building_id)
args['capform'] = capacity_form
args['rtform'] = roomtype_form(building_id=building_id)
return render_to_response('building.html', args)
但我有个错误:
'RoomTypeForm' object has no attribute 'fields'
直列:
self.fields['Capacity'].queryset = Capacity.objects.filter(Building=self.building_id)
怎么可能使所有这些都能起作用呢?请帮忙。你知道吗
您需要调用
__init__
中的super()
类或者,如果您使用的是python3,您可以:
另一方面,在
fields
中指定列表或元组是标准实践。您指定了一个集合。你知道吗相关问题 更多 >
编程相关推荐