Django admin使用Form完成不关联表(未使用任何外键)数据的添加(以下拉框为例)

公司项目表设计要求为不使用任何外键,因此,在初期使用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,还有很多探索的地方需要去摸索。高山仰止,景行行止。加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值