django两个外键独特的记录

时间:2014-02-20 02:52:41

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

我有三个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)

现在我的问题是:

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

有没有办法强制执行这种关系?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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)