django批量修改table_Django修改桥表(Django modify bridge table)

Django修改桥表(Django modify bridge table)

我的django应用程序中有两个模型,事件/用户,它们具有多对多的关系。

活动可以有很多与会者(用户)。 用户可以参加很多活动。

Django自动为这种关系建立了一个桥牌表。

我的问题是如何使用迁移向该表添加新字段,因为此Bridge表没有模型。

I have two models in my django application, event/user, that have a many-to-many relationship.

Event can have many attendees(user). User can attend many events.

Django automatically made a bridge table for for this relationship.

My question is how can I add new fields to this table using migrations as there is not a model for this Bridge table.

原文:https://stackoverflow.com/questions/40794416

2020-02-19 18:57

满意答案

class Group(models.Model):

name = models.CharField(max_length=128)

members = models.ManyToManyField(Person, through='Membership')

def __str__(self): # __unicode__ on Python 2

return self.name

class Membership(models.Model):

person = models.ForeignKey(Person, on_delete=models.CASCADE)

group = models.ForeignKey(Group, on_delete=models.CASCADE)

date_joined = models.DateField()

invite_reason = models.CharField(max_length=64)

This can be done by creating a "through" table and adding the fields on it. Check out the docs at https://docs.djangoproject.com/es/1.10/topics/db/models/

class Group(models.Model):

name = models.CharField(max_length=128)

members = models.ManyToManyField(Person, through='Membership')

def __str__(self): # __unicode__ on Python 2

return self.name

class Membership(models.Model):

person = models.ForeignKey(Person, on_delete=models.CASCADE)

group = models.ForeignKey(Group, on_delete=models.CASCADE)

date_joined = models.DateField()

invite_reason = models.CharField(max_length=64)

2016-11-24

相关问答

如果您启用了自动引用计数(ARC),则代码是正确的。 你的语句中有两个__bridge_transfer 。 因此,创建的CFObjects的所有权将被转移到NSObjects。 如果您打开了ARC,它们将自动释放。 如果您使用__bridge代替这两个语句,则需要显式调用CFRelease来释放由*Copy API创建的CFObjects。 __bridge语句也是正确的。 因为你在CF API中引用了一个NSObject。 您没有转让所有权,所以ARC会将其释放。 If you have au...

public class User extends RealmObject {

@PrimaryKey

private String userId;

private String password;

@Index

private String username;

private String paGoal; // ?

private long maxInactivityInterval;

private RealmList<...>

看看这个看起来与你正在寻找的非常相似的答案 。 https://stackoverflow.com/a/11296097/886591 Look at this answer which looks very similar to what you are looking for. https://stackoverflow.com/a/11296097/886591

我通常会使用基于纯文件的csv来避免你的方法。 持续的磁盘/ IO操作对于服务器而言是昂贵的( 阅读此常见问题解答可能会帮助您了解更多),并且可能会引入竞争条件,多个用户尝试更新同一个表,然后csv将=> 读/写 < - > 访问/锁等 我个人建议使用NoSQL数据库(如Redis , MongoDB等)作为d3.js的存储后端,通过使用WebSocket - Pub / Sub消息在服务器 < - > 客户端之间进行通信(使用ajax作为后备)。 通过队列系统( Celery或只使用NoSQL)...

你可以使用聚合。 如果你不关心连续排序: select food_id, min(ingred_id) as ingred1_id,

(case when min(ingred_id) <> max(ingred_id) then max(ingred_id) end) as ingred2_id

from t

group by food_id;

注意: min() / max()使用特别有效,因为您有两个值。 如果你有更多的价值,然后用适当的数据提出另一个问题。 You can ...

我认为你可以使用一个简单的查询来使用GROUP BY和GROUP_CONCAT()来实现这一点 SELECT left_id, GROUP_CONCAT(right_id SEPARATOR ' ') as rigth_id

FROM left-right

GROUP BY left_id;

I think you can use a simple query to acheive this using GROUP BY and GROUP_CONCAT() SELECT left_id, ...

请使用以下查询 DECLARE @tblPerson AS TABLE( ID INT IDENTITY(1,1),

PersonFK INT,

TAGFK INT)

INSERT INTO @tblPerson(PersonFK,TAGFK)

VALUES(1,1), (1,2) , (2,1), (3,1), (1,4), (1,5)

SELEC...

对于您的第一个答案,您说您需要学生列表(我假设您需要输出仅在学生表中提供的详细信息,例如姓名),以及他们注册的课程数量。 这个问题的第二部分可以通过计算每个studentntid学生课程表中有多少行来完成: SELECT studentid, COUNT(courseID) num_of_enrolled_courses

FROM studentcourses

GROUP BY studentID;

完成后,您只需将此查询加入学生表即可获得额外信息: select s.studentname...

这可以通过创建“直通”表并在其上添加字段来完成。 查看https://docs.djangoproject.com/es/1.10/topics/db/models/上的文档 class Group(models.Model):

name = models.CharField(max_length=128)

members = models.ManyToManyField(Person, through='Membership')

def __str__(self): ...

// Query for all the items in the list

int[] itemIds = itemList.Select(item => item.ItemId).AsArray();

var query =

db.Item.Where(item =>

itemIds.Contains(item.ItemId));

// Apply each tag condition

foreach (int tagid in tagFilterConditions...

相关文章

http://damocles.blogbus.com/logs/13476603.html 网络拓扑

...

作用: 描述具体的表规则 属性: name – 声明 table 名字,当命中 sql 中的 tabl

...

Django的下载与安装,下载地址https://www.djangoproject.com/down

...

Haystack - Search for Django Search doesn'

...

Table   当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<

...

System.out.println("Emp&nbsp

前天晚上写了个django-haystack和whoosh结合来实现搜索功能的,今天把solr看了下,

...

上周蛋疼给做的一个东西加了个搜索引擎,虽然整体来说项目数据也不会很大,但是出于DBA的职业嘛,不想用l

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值