gpt4 book ai didi

python - 如何在 Django 中添加带有通用外键的 unique_together

转载 作者:行者123 更新时间:2023-12-05 07:49:42 27 4
gpt4 key购买 nike

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

当我尝试保存对象时(例如在 Admin 中),我从数据库中收到唯一约束错误(引发 500),但在 Admin (UI) 上没有出现 ValidationError。

下面是我的代码片段,

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

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')

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

class MyModel(models.Model):
name = models.CharField(max_length=60, db_index=True)
targeting = GenericRelation('Targeting')

出现异常:

重复键值违反唯一约束“mymodel_targeting_targeting_type_0dff10ee_uniq”
详细信息:键 (targeting_type, content_type_id, object_id)=(geo, 18, 188) 已经存在。

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

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

最佳答案

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

关于python - 如何在 Django 中添加带有通用外键的 unique_together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37001891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com