Django的 - 创建一个包含其他车型领域
问题描述:
我试图打造“unique_together”元为模型,但不是从当前模型两个领域唯一重点,其中之一就是其他模型中的字段(这是一个在当前模型外键): 我希望有“项”模式unique_together同时包含了“标识”字段和规格的CONTAINER_ID。一个Spec是'Item'中的外键。 试过这样的事情,但我得到“未解决的参考规范......”Django的 - 创建一个包含其他车型领域
class Spec(BaseModel):
title = models.CharField(max_length=200)
identifier = models.IntegerField(unique=True)
container = models.ForeignKey(Container, related_name='specs')
class Item(SubmittalsBaseModel, BaseModel, DirtyFieldsMixin):
title = models.CharField(max_length=200)
identifier = models.CharField(max_length=200, unique=True)
spec = models.ForeignKey(Spec, related_name='items')
class Meta:
container_id = spec.container
unique_together = ('identifier', 'container_id')
答
你不能做到这一点。(至少我认为)..
的unique_together
子句直接翻译到SQL唯一索引。而且,您只能在单个表格的列上设置这些列表,而不是多个表格的组合。
您可以自己动手,虽然加验证,只需覆盖validate_unique方法,这验证添加到它。
Docs:http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.validate_unique
谢谢。你可以只把一个链接 - https://stackoverflow.com/questions/4440010/django-unique-together-with-foreign-keys – user2880391
是的,我可以做到这一点! – zaidfazil