首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中添加带有泛型外键的unique_together

如何在Django中添加带有泛型外键的unique_together
EN

Stack Overflow用户
提问于 2016-05-03 18:38:52
回答 1查看 690关注 0票数 3

我不确定是我做错了还是在Django中处理GenericForeign关系时处理唯一约束时出现了一些问题。

当我试图保存一个对象(例如在管理中)时,我从数据库中得到了唯一的约束错误(提升了500),但在管理(UI)上却没有得到ValidationError。

下面是我的代码片段,

我有一个通用的关系模型,如下所示

代码语言:javascript
复制
class Targeting(models.Model):

    TARGETING_CHOICES = (
        ('geo', "Geo targeting"),
        ('other', "Other targeting"),
    )

    targeting_type = models.CharField(max_length=64, choices=TARGETING_CHOICES, null=False)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()

    content_object = GenericForeignKey('content_type', 'object_id')

    class Meta:
        unique_together = ('content_type', 'object_id', 'targeting_type')

我使用它的另一个模型是,

代码语言:javascript
复制
class MyModel(models.Model):
    name = models.CharField(max_length=60, db_index=True)
    targeting = GenericRelation('Targeting')

引发异常:

duplicate key value violates unique constraint "mymodel_targeting_targeting_type_0dff10ee_uniq" DETAIL: Key (targeting_type, content_type_id, object_id)=(geo, 18, 188) already exists.

我的实现方式有问题吗?或者某些东西不应该像这样使用?

任何形式的帮助都是非常感谢的。谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-05-03 19:34:55

您在这里不会收到ValidationError,因为如果没有额外的查询,就无法验证它,并且django不会自己创建该查询。如果您需要验证,您需要自己编写它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37001891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档