Py学习  »  Django

[精华] [求助]django admin如何同时插入多条数据

ampeeg • 8 年前 • 5294 次点击  

在做一个场地申请的app

 主要的字段: 申请场地名称、申请时段 (这两个字段有限制,mysql里面联合唯一)

现在一个问题是:同一个申请单位可能会申请一个日期的多个时段,所以需要插入的数据大致如下:

 申请单位名称:department
 申请场地名称:name
 申请日期:   date
 申请时段: XXX01、XXX02、XXX03(来自于外键)

此时插入数据库的数据应该为三条:

 1、department,name,date,XXX01

 2、department,name,date,XXX02

 3、department,name,date,XXX03

 而admin默认的一次插入一条,求大神帮忙给出解决方案~~
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1330
 
5294 次点击  
文章 [ 12 ]  |  最新文章 8 年前
ampeeg
Reply   •   1 楼
ampeeg    8 年前

@waklin1982 @MCC 我将联合唯一的三个键 另建了一个表(表1),然后将其他信息表(表n)作为这个表的外键,这样可以使用 inlines 的方法在admin里面实现同时往表1里插入多条数据,切每条数据 都与表n的1条数据相关。。

waklin1982
Reply   •   2 楼
waklin1982    8 年前

这个admin貌似做不到,应该做一个单独的页面放一个表单,数据库的写入在view里实现

ampeeg
Reply   •   3 楼
ampeeg    8 年前

@MCC 唯一是在 数据库层面的唯一,名称、日期、时段联合唯一

ampeeg
Reply   •   4 楼
ampeeg    8 年前

@MCC 谢谢。我去研究下官方文档,实在不行只有自己写个add函数了。。

MCC
Reply   •   5 楼
MCC    8 年前

manytomany有个through用法,我没有试过,不知道有没有帮助

MCC
Reply   •   6 楼
MCC    8 年前

A ManyToManyField cannot be included in unique_together. (It’s not clear what that would even mean!) If you need to validate uniqueness related to a ManyToManyField,

用many to many的话不是插入多个记录,是插入一条记录,时段包含了 8:00~9:00和9:00~10:00的list,但是这样的唯一我不知道真正效果是啥样的,可能做不到你想要的唯一

如果难受一些就是恢复原状,插入多个记录了。。

MCC
Reply   •   7 楼
MCC    8 年前

@ampeeg 申请时段你是怎么做到数据库上面的唯一的?

今天的8:00~9:00和明天的8:00~9:00是怎么唯一的,用的是id还是什么之类的东西?

我之前many to many的想法是,时间这个是没法唯一的,就是在申请的时候逻辑检测是不是被占用

如果一定要唯一,你就需要专门做个表,包含了场地名称,日期,时段,来做到数据库层的唯一,这样表的结构就不是你现在设计的这样了

ampeeg
Reply   •   8 楼
ampeeg    8 年前

@MCC 不能这样,因为我的数据库里面 场地名称、申请时段 是联合唯一的,如果将申请时段改成many to many ,就不能设置成联合唯一了,所以本质上还是一对多的关系,因为一个场地的一个时段只能纪录一次。

表结构:

主表:   场地名称 + 申请时段 (来自于外键)----这个表的数据每条都唯一
外键表:  申请时段(8:00~9:00或者9:00~10:00)

   有时候需申请 场地1的   8:00~10:00,所以需要连续插入两条数据: 
                     场地1, 8:00~9:00
                     场地1,9:00~10:00
ampeeg
Reply   •   9 楼
ampeeg    8 年前

哟西,那我试试

MCC
Reply   •   10 楼
MCC    8 年前

@ampeeg 用manytomany试一试 foreign是one to many的,你这个看上去应该是many to many

ampeeg
Reply   •   11 楼
ampeeg    8 年前

@MCC 使用的一对多的关系,model里面用的Foreignkey()

MCC
Reply   •   12 楼
MCC    8 年前

使用的manytomany吗