Tag: 多对多

通用的多对多关系

我正在尝试创build一个邮件系统,邮件的发件人和收件人可以是通用实体。 这似乎罚款的发件人,只有对象引用(GenericForeignKey),但我不知道如何去接收者(GenericManyToManyKey ??) 下面是一个简单的例子。 PersonClient和CompanyClient从客户端inheritance属性,但有自己的具体细节。 最后一行是棘手的问题。 如何让消息收件人成为一组公司客户端和个人客户端 class Client(models.Model): city = models.CharField(max_length=16) class Meta: abstract = True class PersonClient(Client): first_name = models.CharField(max_length=16) last_name = models.CharField(max_length=16) gender = models.CharField(max_length=1) class CompanyClient(Client): name = models.CharField(max_length=32) tax_no = PositiveIntegerField() class Message(models.Model): msg_body = models.CharField(max_length=1024) sender = models.ForeignKey(ContentType) recipients = models.ManyToManyField(ContentType)

Java方法命名约定:太多getter

为什么Java方法名称广泛使用“get”前缀? 至less在我的Java程序中,有很多名称以“get”开头的方法。 get-methods的百分比可疑很高。 由于通货膨胀,我开始觉得“get”这个词正在失去意义。 这是我的代码中的噪音。 我注意到在函数式/声明式编程和PL / SQL中使用了不同的命名约定。 方法名称只是说明方法返回的内容。 他们将使用account.amount()和Time.isoFormattedDateString(Date date)代替account.getAmount()或Time.isoFormattedDateString(Date date) 。 这对我来说非常有意义,因为函数的名称描述了对方法进行评估的结果(假设没有任何副作用)。 “get”前缀似乎是多余的。 我刚刚开始阅读“清洁代码”一书。 它说方法应该只做一件事,而那个东西通常应该是下列之一: 通知一些事件的对象,通常作为parameter passing事件。 询问关于某个对象的问题,通常使用方法名称形成自然语言语句,将对象作为parameter passing并返回一个布尔值。 取东西,可能传递一些查找键或一些对象作为参数转换,并始终返回所需的对象/值。 我的问题是关于第三类。 除了“获得”这种方法是否有命名约定? 在select方法名称/前缀时使用什么标准? 这里是一个例子: 我有两个方法getDates()和getSpecialDates() 。 getDates()只是返回一个私有variables的值(对date集合的引用)。 据我所知,这是一个标准的吸气剂。 getSpecialDates()是不同的; 它调用getDates() ,从另一个类中获取一个filter,应用filter并返回getDates()一个子集。 方法getSpecialDates()可以被命名为computeSpecialDates() , findSpecialDates() , selectSpecialDates()或elicitSpecialDates()或其他。 或者我可以简单地将其命名为specialDates() 。 然后,为了一致性,我可以将getDates()重命名为dates() 。 为什么要在应该以“get”为前缀的方法和不应该使用的方法之间进行区分,以及为什么要为“get”findreplace字呢?

列出ManyToManyField中的对象

我试图列出所有的会议和每个会议的名单,打印其3名演讲者。 在我的模板中我有: {% if conferences %} <ul> {% for conference in conferences %} <li>{{ conference.date }}</li> {% for speakers in conference.speakers %} <li>{{ conference.speakers }}</li> {% endfor %} {% endfor %} </ul> {% else %} <p>No Conferences</p> {% endif %} 在我的views.py文件中我有: from django.shortcuts import render_to_response from youthconf.conference.models import Conference def manageconf(request): conferences = Conference.objects.all().order_by('-date')[:5] return […]

JPAhibernate多对多级联

我正在使用JPA 2.0和hibernate。 我有一个User类和一个Group类,如下所示: public class User implements Serializable { @Id @Column(name="USER_ID") private String userId; @ManyToMany @JoinTable(name = "USER_GROUP", joinColumns = { @JoinColumn(name = "GROUP_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") } ) private Set<Group> groupList; //get set methods } public class Group { @Id @Column(name="GROUP_ID") private String groupId; @ManyToMany(mappedBy="groupList") private Set<User> memberList; //get set […]

Django与其他字段的ManyToMany关系

我想存储一些额外的信息,自动创buildManyToMany连接表。 我将如何在Django中做到这一点? 在我的情况下,我有两个表:“员工”和“项目”。 我想存储的是每个员工在每个项目中每工作小时收到多less,因为这些值是不一样的。 那么,我该怎么做呢? 发生在我身上的是,而不是“ManyToManyField”方法,显式创build第三个类/表来存储这些新的信息,并使用“ForeignKey”方法设置其与“Employees”和“Projects”的关系。 我很确定它会起作用,但是这是最好的方法吗?

Django使用contains来过滤多对多

我试图通过多对多的关系过滤一堆对象。 因为trigger_roles字段可能包含多个条目,所以我尝试了包含filter。 但是,因为这是devise用于string我非常无奈,我应该如何过滤这个关系(你可以忽略values_list()atm。)。 此function附加到用户configuration文件: def getVisiblePackages(self): visiblePackages = {} for product in self.products.all(): moduleDict = {} for module in product.module_set.all(): pkgList = [] involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True) 我的工作stream模型看起来像这样(简化): class Workflow(models.Model): module = models.ForeignKey(Module) current_state = models.ForeignKey(Status) next_state = models.ForeignKey(Status) allowed = models.BooleanField(default=False) involved_roles = models.ManyToManyField(Role, blank=True, null=True) trigger_roles = models.ManyToManyField(Role, blank=True, null=True) 虽然解决scheme可能很简单,但我的大脑不会告诉我。 谢谢你的帮助。

如何在MongoDB中组织多对多的关系

我有两个表/集合; 用户和组。 用户可以是任何数量的组的成员,并且用户也可以是任何数量的组的拥有者。 在关系型数据库中,我可能会有第三个名为UserGroups的表,其中包含一个UserID列,一个GroupID列和一个IsOwner列。 我正在使用MongoDB,我相信在文档数据库中有这种关系的不同方法。 我是否应该将用户表中的组和组作为所有者列表作为两个ObjectID数组embedded? 我是否也应该将成员和所有者列表作为两个数组存储在组表中,从而有效地映射引起关系信息重复的关系? 或者是一个桥梁UserGroups表格合法的概念在文件数据库中的多对多的关系? 谢谢

Django从ManyToMany关系中删除对象

我怎么会删除一个对象从多对多的关系,而不删除实际的对象? 例: 我有模特的Moods和Interest 。 “情绪”有很多领域的interests (这是一个models.ManyToManyField(Interest) 。许多许多领域models.ManyToManyField(Interest) )。 我创build了一个名为my_mood的Moods实例。 在my_moods的兴趣领域,我有我的兴趣,意思 >>> my_mood.interests.all() [my_interest, …] 如何在不删除模型实例的情况下从my_mood中删除my_interest? 换句话说,如何在不影响相关模型的情况下移除关系?

一对多,多对一和多对多的区别?

好,所以这可能是一个微不足道的问题,但我很难形象化和理解差异以及何时使用每个差异。 对于单向和双向映射等概念如何影响一对多/多对多的关系,我也有点不清楚。 我现在正在使用Hibernate,所以任何与ORM相关的解释都会有所帮助。 举一个例子,假设我有以下设置: public class Person{ private Long personId; private Set<Skill> skills; //Getters and setters } public class Skill{ private Long skillId; private String skillName; //Getters and setters } 那么在这种情况下我会有什么样的映射? 这个具体例子的答案是肯定的赞赏,但我也真的很喜欢什么时候使用一对多和多对多的概述,何时使用连接表与连接列和单向与双向。

在Django中如何让多对多的字段是可选的?

当你有一个多对多的关系( related_name ,不是),并且你正在尝试使用pipe理界面时,你需要input其中一个关系,即使你不需要创build第一个条目。 我正在创build一个活动组织者的应用程序。 想象一下,我们有Event和Group模型,绑定了多对多的关系。 Django related_name另外两个表的索引创build另一个表。 但我看不出为什么这个额外的表必须填充。 如果我通过phpMyAdmin使用数据库,我可以在不注册Event情况下创build一个Group ,因为两者之间的连接只能通过一个单独的表,并且在给定的级别上没有数据库值的强制执行。 我如何使pipe理界面实现呢? 在Django中如何让多对多的字段是可选的?