Opened 11 years ago
Closed 11 years ago
#21705 closed Bug (invalid)
Generic Relations fail to detect validation error appropritely
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | contrib.admin | Version: | 1.6 |
Severity: | Normal | Keywords: | AdminSite, GenericRelation, unique_together, IntegrityError |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hi. When using a GenericRelation on a Model to create a M2M generic relation between two other models, with a unique_together attribute on the relation. admin site fails to detect uniqueness-validation and instead of reporting a unique violation validation error it raises an IntegrityError e.g. IntegrityError: columns tag_id, object_id are not unique
here is the case:
class Tag(models.Model): slug = models.SlugField(max_length=100) def __unicode__(self): return self.slug class News(models.Model): title = models.CharField(max_length=100) def __unicode__(self): return self.title class Tagger(models.Model): class Meta: '''unique_together = ('tag', 'object_id')''' tag = models.ForeignKey(Tag) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey()
and creating the admin objects like this:
class TagAdmin(admin.ModelAdmin): list_display = ('slug',) class TabularTagInline(generic.GenericTabularInline): model = models.Tagger extra = 2 class NewsAdmin(admin.ModelAdmin): list_display = ('title', ) inlines = (TabularTagInline,) admin.site.register(Blog, BlogAdmin) admin.site.register(Tag, TagAdmin)
Change History (3)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
sorry.
admin.site.register(Blog, BlogAdmin) should be admin.site.register(News, NewsAdmin).
comment:3 by , 11 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
admin.site.register(Blog, BlogAdmin) should be admin.site.register(News, BlogAdmin).