请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于django的models扩展字段询问

在实际生产中,商品的字段应该并不仅限于作者所说的那些字段,比方说商品分【某某味】【某某味】【某某味】这种情况,在创建models时应该怎么处理?最后在rest api中表现的就是如图所示https://img1.sycdn.imooc.com/szimg//59af86e5000159f604540397.jpg这种多规格多种类但是同属于一个商品的情况下,models如何设置?

正在回答

1回答

choices

https://docs.djangoproject.com/en/1.11/ref/models/fields/#choices

from django.db import modelsclass Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    YEAR_IN_SCHOOL_CHOICES = (
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
    )
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )
    def is_upperclass(self):
        return self.year_in_school in (self.JUNIOR, self.SENIOR)


无限级分类示意图(参考自《Yii 2.0开发一个仿京东商城平台》http://coding.imooc.com/class/57.html)

https://img1.sycdn.imooc.com/szimg//59b0065e00014a0014220884.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 隐逆 #1
    我认为choices只适用于固定的值,比方说choices的key是【规格】,这个key所拥有的value是【规格1、规格2、规格3】,这种我认为只适用于所有商品都有这个【规格】并且规格都为【规格1、规格2、规格3】。例如,商品名为康师傅方便面,【规格】为【香辣味、酸菜味】,而商品名为汤达人方面的时候【规格】这个key的value就是【海豚味,清汤味】。即便choices的对象是另外一个数据表,则每次选择商品都必须选择【香辣味、酸菜味、海豚味,清汤味】中的一个,如果前期产品少这个可以慢慢选,商品多了岂不要在很多选项中找一个?我认为choices满足不了这种需求。例如商品A没有【规格】,商品B有【规格】,规格内容为规格1、2、3。商品C的规格又为456。甚至最后规格不同导致价格不同,还需要做出相应的变化。
    回复 有任何疑惑可以回复我~ 2017-09-06 18:11:09
  • Timm_Lee 回复 提问者 隐逆 #2
    三种选择供参考:
    1. 单独维护一张表,这张表有商品类别、规格、价格的,并且每一行有唯一的标识。把这个标识填入目前的主表中。好处是避免使用外键,坏处是每次可能产生两次查询。
    2. 也是新建表,内容与上一选项相同。主表建立外键。数据库较小时适用。
    3. 把详细信息全部填入主表。
    回复 有任何疑惑可以回复我~ 2017-09-06 18:27:33
  • Timm_Lee 回复 提问者 隐逆 #3
    或者你可以直接使用mongodb,不必在意字段的划分。
    回复 有任何疑惑可以回复我~ 2017-09-06 18:35:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信