当前位置: 首页 > 面试题库 >

Django Unique Together(带外键)

许振海
2023-03-14
问题内容

我遇到一种情况,我想使用Meta选项unique_together来强制执行某条规则,这是中介模型:

class UserProfileExtension(models.Model):
    extension = models.ForeignKey(Extension, unique=False)
    userprofile = models.ForeignKey(UserProfile, unique=False)
    user = models.ForeignKey(User, unique=False)

    class Meta:
        unique_together = (("userprofile", "extension"),
                           ("user", "extension"),
                           # How can I enforce UserProfile's Client 
                           # and Extension to be unique? This obviously
                           # doesn't work, but is this idea possible without
                           # creating another FK in my intermediary model 
                           ("userprofile__client", "extension"))

这是UserProfile:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    client = models.ForeignKey(Client)

谢谢。


问题答案:

你不能

unique_together子句直接转换为SQL唯一索引。而且,您只能在单个表的列上设置这些值,而不能在多个表的组合上设置。

不过,您可以自己为其添加验证,只需覆盖该validate_unique方法并将此验证添加到其中即可。

文件:http
:
//docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.validate_unique



 类似资料:
  • 我知道这是一个关于云铸造的普遍问题,目前的回答令人失望,尽管我认为这不可能用于微型云铸造的实例,但我想问一问,只是为了确保。是否可以在Micro Cloud Foundry实例上配置外部域,而无需从cloudfoundry子域进行隧道操作?

  • 每当在服务器上删除时,我还想从中删除一个适当的实体。为此,我可以使用并且每当数据库中不再存在父时,也会被删除。听起来不错。 每当我使用更新数据库中的福利时,就会出现问题实际上执行和操作,但是会在内部触发的,因此,该表中的所有数据也会被删除。 (类似的问题出现在和表格上。) 我正在寻找一种在事务结束前暂时禁用外键约束的方法。也就是说,不要在事务期间验证外键,而只在事务结束时验证外键。我仍然希望房间自

  • 我需要有关switch的帮助,这是我需要帮助的代码部分。 在P之后的下一种情况下,我如何才能得到一个“回车”键。我想要的是,如果用户只按了回车键,那么程序将播放另一个回合。我在考虑做字符串。valueOf(kb.nextLine())但这不起作用。 谢谢你的帮助。

  • 带外数据即简称OOB(out-of-band) 带外数据是流式套接字独有的。当出现紧急情况时,无法立即通知接收进程。带外数据正用于解决这一问题。带外数据在正常的数据流之外发送,其效果相当于越过套接字上所有等待数据。当它到达接收进程时,接收进程会收到一个信号,从而进程可以立即处理这个数据。 带外数据的发送 比较简单,只需用MSG_OOB标志调用[[send()|send]]即可 带外数据的接收 有两

  • 问题内容: 我有一个表,其中有几个ID列指向其他表。 我希望 只有 在将数据放入其中时,外键才能强制完整性。如果我稍后进行更新以填充该列,则它还应该检查约束。 (这可能取决于数据库服务器,我使用的是MySQL和InnoDB表类型) 我相信这是一个合理的期望,但是如果我错了,请纠正我。 问题答案: 是的,您只能在值不为NULL时强制执行约束。可以使用以下示例轻松测试它: 第一次插入将通过,因为我们在

  • 问题内容: 阅读以下文章,我设法将图例放在情节之外。 如何将图例排除在情节之外 码: 显示正确的绘图,并在其外部带有图例。但是,当我使用将文件另存为文件时,图例将被截断。 一些谷歌搜索显示了变通方法,例如add或to ,但都没有用。 正确的方法是什么?Matplotlib版本是0.99.3。 谢谢。 问题答案: 问题是,当您动态绘图时,会自动确定边框以适合所有对象。保存文件时,操作不会自动完成,因