#21705: Generic Relations fail to detect validation error appropritely
-------------------------+-------------------------------------------------
     Reporter:           |      Owner:  nobody
  mo_ttds@…              |     Status:  new
         Type:  Bug      |    Version:  1.6
    Component:           |   Keywords:  AdminSite, GenericRelation,
  contrib.admin          |  unique_together, IntegrityError
     Severity:  Normal   |  Has patch:  0
 Triage Stage:           |      UI/UX:  0
  Unreviewed             |
Easy pickings:  0        |
-------------------------+-------------------------------------------------
 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)
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/21705>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/062.2535472f4950d87e96da80da370c8591%40djangoproject.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to