公司项目表设计要求为不使用任何外键,因此,在初期使用admin进行管理时对数据的绑定并不是那么的容易,这里使用Django的Form对数据进行关联绑定(有更快捷的方法,还希望大佬能够告知一二,小弟感激不尽。)。
1、应用内新建forms.py
from django import forms
from .models import *
class AccessoryForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(AccessoryForm, self).__init__(*args, **kwargs)
# 设置为下拉框样式,self.fields[]里的数据必须一致,包括后面admin的编写
self.fields['accessory_name'].choices = [('', '------------')] + [(i.id, i.category_name) for i in
Accessory.objects.filter(status='1')]
accessory_name = forms.ChoiceField(choices=(), widget=forms.Select(attrs={'class': 'required'}))
2、对应model里获取要绑定数据的id或者名称
def get_accessory_name(self):
accessory_names = Accessory.objects.get(pk=int(self.accessory_name))
return accessory_names
get_accessory_name.short_description = '配件ID对应配件名称'
accessory_names = property(get_accessory_name)
3、编写admin.py
导入对应的form类,在该model的admin类里添加如下代码:
form = AccessoryCarMappingForm
fieldsets = (
('XXXXXX', {
'fields': ('accessory_info_name', 'car_info_name'),
}),
)
# XXXXXX是菜单名称
实现效果如下:
上述就完成了简单的数据绑定的操作。关于Form,还有很多探索的地方需要去摸索。高山仰止,景行行止。加油。