我不确定是我做错了还是在Django中处理GenericForeign关系时处理唯一约束时出现了一些问题。
当我试图保存一个对象(例如在管理中)时,我从数据库中得到了唯一的约束错误(提升了500),但在管理(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')引发异常:
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.
我的实现方式有问题吗?或者某些东西不应该像这样使用?
任何形式的帮助都是非常感谢的。谢谢
发布于 2016-05-03 19:34:55
您在这里不会收到ValidationError,因为如果没有额外的查询,就无法验证它,并且django不会自己创建该查询。如果您需要验证,您需要自己编写它。
https://stackoverflow.com/questions/37001891
复制相似问题