【问题标题】:django two foreign keys unique recorddjango 两个外键唯一记录
【发布时间】:2014-03-20 18:23:06
【问题描述】:

我有三个 django 模型:

class Item(models.Model):
    itemid = models.IntegerField(default=0, unique=True)

class Region(models.Model):
    regionid = models.IntegerField(default=0, unique=True)

class Price(models.Model):
    regionid = models.ForeignKey(Region)
    itemid = models.ForeignKey(Item)

现在我的问题是:

我需要让 Item 和 Region 组合的 Price 是唯一的(例如 itemid = 1 & regionid = a 因此只能有一个 Price 可以具有 itemid = 1 和 regionid = a 的外键)。

有什么方法可以加强这种关系吗?

【问题讨论】:

    标签: python django django-models foreign-keys foreign-key-relationship


    【解决方案1】:

    你应该看看unique together!它可能会解决您的问题。

    【讨论】:

    • 所以我会在我的 Price 课程的末尾添加这样的内容吗?元类:unique_together = ("regionid", "itemid")?
    【解决方案2】:

    Django 还不支持复合索引。公认的解决方案是注册一个 post_syncdb 信号处理程序 -- https://docs.djangoproject.com/en/1.6/ref/signals/#post-syncdb

    这是模板(您需要填写相应的详细信息):

    from django.db import connection
    from django.db.models.signals import post_syncdb
    def callback(sender, **kwargs):
        cur = connection.cursor()
        cur.execute('CREATE UNIQUE INDEX ...')
    
    post_syncdb.connect(callback, sender=app.models)
    

    【讨论】:

    • 很抱歉,您必须再握住我一点。我对 python 和 django 非常陌生 - 我已经阅读了您提供的链接,但仍然不明白。我会把它放在哪里?我将如何使用唯一索引?
    • 我的立场是正确的——阿尔瓦罗是对的。 Django 现在有了“独一无二的在一起”(看起来他们已经有一段时间了)
    猜你喜欢
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2011-05-30
    • 2021-09-23
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多