最近在用Django写一个拿快递网站,其中有一个小部分就是下拉框的写法。我在CSDN中看了许多博主的文章但还是没有解决我的问题,巧合之下我写出来了,于是赶快写出来和大家分享一下。当然如果有什么更简单的办法,希望可以交流一下想法哦
model.py
class SendPackage(models.Model):
#这里SADRESS就是网页下拉框显示的内容,('1','2')这里的1是会存在数据库中的,2是展示在页面中的,按道理1和2是不一样的,但是我在后面的处理中无法将1转化成2输出,如果有大神知道,一定要和我说哦
SADRESS = (
('行建轩一栋','行建轩一栋'),
('行建轩二栋','行建轩二栋'),
('行建轩三栋','行建轩三栋'),
('行建轩四栋','行建轩四栋'),
('行建轩五栋','行建轩五栋'),
('行建轩六栋','行建轩六栋'),
('至诚轩一栋','至诚轩一栋'),
('至诚轩二栋','至诚轩二栋'),
('至诚轩三栋','至诚轩三栋'),
('至诚轩四栋','至诚轩四栋'),
('弘毅轩一栋','弘毅轩一栋'),
('弘毅轩二栋','弘毅轩二栋'),
('弘毅轩三栋','弘毅轩三栋'),
('弘毅轩四栋','弘毅轩四栋'),
('敏行轩','敏行轩')
)
SETYPE=(
('fs','服饰'),
('jj','家具'),
('dq','电器'),
('mz','美妆护肤'),
('ts','图书'),
('lx','旅行'),
)
sname = models.CharField(u'收件人姓名:',max_length=30)
saddress = models.CharField(u'住址:',max_length=10,choices=SADRESS)
sexpressad = models.CharField(u'快递名称:',max_length=30)
sename = models.CharField(u'提取码:',max_length=15)
sphone = models.CharField(u'联系方式:',max_length=11)
setype = models.CharField(u'快递类型:',max_length=2,choices=SETYPE,default=u'服饰')
class Meta:
unique_together = ('sname','saddress','sexpressad','sename','sphone','setype')
def __unicode__(self)://这是python2.7的做法,python3.x是str哦,不要抄错了
return self.sname
admin.py
class SendPackageAdmin(admin.ModelAdmin):
list_display = ('sname','sexpressad','sename','sphone','setype')
admin.site.register(SendPackage,SendPackageAdmin)
这里是为了在后台可以展示出来,便于管理
form.py
class SendPackageform(forms.Form):
SADRESS = (
('行建轩一栋','行建轩一栋'),
('行建轩二栋','行建轩二栋'),
('行建轩三栋','行建轩三栋'),
('行建轩四栋','行建轩四栋'),
('行建轩五栋','行建轩五栋'),
('行建轩六栋','行建轩六栋'),
('至诚轩一栋','至诚轩一栋'),
('至诚轩二栋','至诚轩二栋'),
('至诚轩三栋','至诚轩三栋'),
('至诚轩四栋','至诚轩四栋'),
('弘毅轩一栋','弘毅轩一栋'),
('弘毅轩二栋','弘毅轩二栋'),
('弘毅轩三栋','弘毅轩三栋'),
('弘毅轩四栋','弘毅轩四栋'),
('敏行轩','敏行轩')
)
SETYPE=(
('fs','服饰'),
('jj','家具'),
('dq','电器'),
('mz','美妆护肤'),
('ts','图书'),
('lx','旅行'),
)
sname = forms.CharField(label=u'收件人姓名',max_length=30)
saddress = forms.ChoiceField(label=u'住址',widget=forms.Select(),choices=SADRESS,initial=SADRESS[0])
sexpressad = forms.CharField(label=u'快递名称:',max_length=30)
sename = forms.CharField(label=u'提取码:',max_length=15)
sphone = forms.CharField(label=u'联系方式:',max_length=11,initial=u'如:手机号码或QQ号')
setype = forms.ChoiceField(label=u'快递类型:',widget=forms.Select(),choices=SETYPE,initial=SETYPE[0])
看见上面的ChoiceField,表示选择;widget表示表单的标签(我觉得是这样的);initial表示初始化选择 这里[0]表示行建轩一栋
后面的view就是自己想怎么写就怎么写啦,最后来一张不加任何页面渲染的图
个人见解,如有错误请帮忙指出,谢谢