什么是related_name
对on ManyToManyField
和ForeignKey
字段有用的参数?例如,给出以下代码,有什么影响related_name='maps'
?
class Map(db.Model):
members = models.ManyToManyField(User, related_name='maps',
verbose_name=_('members'))
Run Code Online (Sandbox Code Playgroud) 我有这种情况:
public class Member
{
public int MemberID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Comment
{
public int CommentID { get; set; }
public string Message { get; set; }
public virtual ICollection<Member> Members { get; set; }
}
public class MemberComment
{
public int MemberID { get; set; }
public int CommentID { get; set; } …
Run Code Online (Sandbox Code Playgroud) 在活动记录中有一个名为find_or_create_by的方便动态属性:
Model.find_or_create_by_<attribute>(:<attribute> => "")
但是,如果我需要通过多个属性find_or_create呢?
假设我有一个模型来处理Group和Member之间的M:M关系,称为GroupMember.我可以有很多实例,其中member_id = 4,但我不想要多于一次的实例,其中member_id = 4和group_id = 7.我正在试图弄清楚是否可以这样做:
GroupMember.find_or_create(:member_id => 4, :group_id => 7)
Run Code Online (Sandbox Code Playgroud)
我意识到可能有更好的方法来处理这个问题,但我喜欢find_or_create这个想法的便利性.
activerecord many-to-many model ruby-on-rails dynamic-attributes
当您有多对多关系(related_name
而不是through
)并且您尝试使用管理界面时,您需要输入其中一个关系,即使您不必存在创建第一个条目.
我正在创建一个作为活动组织者的应用程序.想象一下,我们拥有Event
和Group
模型,与多对多关系绑定.
Django related_name
创建了另一个表,其中包含其他两个表的索引.
但我看不出为什么这个额外的表已经被填充.
如果我通过phpMyAdmin使用数据库,我可以创建一个Group
没有注册的Event
,因为两者之间的连接只是通过一个单独的表,并且在给定级别没有数据库值强制执行.
如何使管理界面实现呢?
如何在Django中使多对多字段可选?
好的,这可能是一个微不足道的问题,但我无法想象和理解差异以及何时使用每个差异.关于单向和双向映射等概念如何影响一对多/多对多关系,我也有点不清楚.我现在正在使用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
}
Run Code Online (Sandbox Code Playgroud)
那么在这种情况下我会有什么样的映射?这个具体示例的答案肯定是值得赞赏的,但我也非常希望概述何时使用一对多和多对多以及何时使用连接表与连接列以及单向与双向.
我的数据库包含3个表:用户和服务实体具有多对多关系,并与SERVICE_USER表连接,如下所示:
用户 - SERVICE_USER - 服务
SERVICE_USER表包含其他BLOCKED列.
执行此类映射的最佳方法是什么?这些是我的实体类
@Entity
@Table(name = "USERS")
public class User implements java.io.Serializable {
private String userid;
private String email;
@Id
@Column(name = "USERID", unique = true, nullable = false,)
public String getUserid() {
return this.userid;
}
.... some get/set methods
}
@Entity
@Table(name = "SERVICES")
public class CmsService implements java.io.Serializable {
private String serviceCode;
@Id
@Column(name = "SERVICE_CODE", unique = true, nullable = false, length = 100)
public String getServiceCode() {
return this.serviceCode;
}
.... …
Run Code Online (Sandbox Code Playgroud) 你会如何与MongoDB进行多对多的关联?
例如; 假设您有一个Users表和一个Roles表.用户有很多角色,角色有很多用户.在SQL中,您将创建一个UserRoles表.
Users:
Id
Name
Roles:
Id
Name
UserRoles:
UserId
RoleId
Run Code Online (Sandbox Code Playgroud)
MongoDB中如何处理相同类型的关系?
在阅读此问题中的评论后,会出现此问题:
创建多对多表时,应该在两个外键列上创建复合主键,还是创建自动增量代理"ID"主键,并将索引放在两个FK列上(也许一个独特的约束)?在每种情况下插入新记录/重新索引对性能有何影响?
基本上,这个:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
Run Code Online (Sandbox Code Playgroud)
与此:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
Run Code Online (Sandbox Code Playgroud)
评论者说:
使两个ID成为PK意味着表按照该顺序在磁盘上进行物理排序.因此,如果我们插入(Part1/Device1),(Part1/Device2),(Part2/Device3),然后(Part1/Device3),数据库必须将表拆开并在条目2和3之间插入最后一个.许多记录,这变得非常有问题,因为它涉及每次添加一个数据,数千或数百万条记录.相比之下,自动增量PK允许将新记录添加到最后.
我问的原因是因为我一直倾向于使用没有代理自动增量列的复合主键,但我不确定代理键是否实际上更具性能.
我正在使用EF4和它的新功能.我的项目中有很多对很多,似乎无法解决如何插入或更新.我已经构建了一个小项目,只是为了看它应该如何编码.
假设我有3个表
添加所有关系并通过模型浏览器更新模型后,我注意到StudentClass没有出现,这似乎是默认行为.
现在我需要同时进行插入和更新.你怎么做呢?我可以下载示例的任何代码示例或链接,还是可以节省5分钟?
如何在不删除实际对象的情况下从多对多关系中删除对象?
例:
我有模特Moods
和Interest
.
Mood
有一个多对多的字段interests
(这是一个models.ManyToManyField(Interest)
).
我创建了一个Moods
被调用的实例my_mood
.在my_moods
我的兴趣领域,我my_interest
有意义
>>> my_mood.interests.all()
[my_interest, ...]
Run Code Online (Sandbox Code Playgroud)
如何my_interest
在my_mood
不删除任何模型实例的情况下删除?换句话说,如何在不影响相关模型的情况下删除关系?
many-to-many ×10
django ×3
c# ×2
hibernate ×2
activerecord ×1
associations ×1
django-admin ×1
jointable ×1
jpa ×1
mapping ×1
model ×1
mongodb ×1
one-to-many ×1
orm ×1
primary-key ×1
python ×1
sql ×1