我有三个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的外键)。
有没有办法强制执行这种关系?
答案 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)