模型有多个子类怎么屏蔽细节呢

来源:4-6 user modesl.py设计

justcalm

2018-02-02

比如需要建立一个用户,但是用户有两者。

比如 chinese 有 姓,名,两个charfiled

Amertcan 有FirstName SecondName LastName 三个charField

就是两个子类属性差很多的情况。该怎么写models跟分表呢呢


写回答

3回答

justcalm

提问者

2018-02-09

这是现在的方式。

//img.mukewang.com/szimg/5a7d56f60001cd2128801800.jpg

//img.mukewang.com/szimg/5a7d57a70001e92228801800.jpg

//img.mukewang.com/szimg/5a7d57a70001564b28801800.jpg

加一个cn_user的步骤为。 Add User 然后填name/age/Country.下面再填cn_user的信息。us_user信息不填。很不方便。


希望效果是这样的.Name Age这些不变。选择Country 为China后,下面就只出现对应China的表单。选择US后就只出现对应US的表单

//img.mukewang.com/szimg/5a7d5ab20001b07210260768.jpg

//img.mukewang.com/szimg/5a7d5ab20001915112020760.jpg



1
0

justcalm

提问者

2018-02-02

找到了。多表继承和子类可以实现。不过有更好的办法么。

1
1
bobby
多表继承和子类是比较长久的方法 其他方法都是一些trick 这些trick在你后期代码维护的过程中 可能会给以后造成不便
2018-02-05
共1条回复

justcalm

提问者

2018-02-05

//img.mukewang.com/szimg/5a786a570001267016521472.jpg

分了三表,一个存储中国用户,一个美国用户,一个映射。不过请问在创建的时候,怎么调用model生成对象呢。查了下,重写models __init__ 似乎可以,但是很复杂的样子。。不会。。方便教一下么。

需求就是,在admin后台创建时,选择国籍后,就能根据不同国籍提供不同的表单内容




0
3
bobby
回复
justcalm
能否截图大概说明一下, 你的需求我不是很理解
2018-02-08
共3条回复

Python3.6+django+xadmin,打造在线教育平台

【毕设】Python 2.7到3.6 完美适配,Django升级2.0

3677 学习 · 4038 问题

查看课程