社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

ampeeg • 9 年前 • 5986 次点击  

在做一个场地申请的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
 
5986 次点击  
文章 [ 12 ]  |  最新文章 9 年前
ampeeg
Reply   •   1 楼
ampeeg    9 年前

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

waklin1982
Reply   •   2 楼
waklin1982    9 年前

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

ampeeg
Reply   •   3 楼
ampeeg    9 年前

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

ampeeg
Reply   •   4 楼
ampeeg    9 年前

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

MCC
Reply   •   5 楼
MCC    9 年前

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

MCC
Reply   •   6 楼
MCC    9 年前

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    9 年前

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

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

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

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

ampeeg
Reply   •   8 楼
ampeeg    9 年前

@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    9 年前

哟西,那我试试

MCC
Reply   •   10 楼
MCC    9 年前

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

ampeeg
Reply   •   11 楼
ampeeg    9 年前

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

MCC
Reply   •   12 楼
MCC    9 年前

使用的manytomany吗