Using the models and admin below, create a new GenericAttachment object using the inline form on the Parent change page. Then create another one with the same slug. The result is an IntegrityError where "columns content_type_id, object_id, slug are not unique". This works fine for Attachment objects.
Models:
class Parent(models.Model):
name = models.CharField(max_length=200)
class Attachment(models.Model):
name = models.CharField(max_length=200)
parent = models.ForeignKey(Parent)
slug = models.SlugField()
class Meta:
unique_together = ['parent', 'slug']
class GenericAttachment(models.Model):
name = models.CharField(max_length=200)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
parent = generic.GenericForeignKey()
slug = models.SlugField()
class Meta:
unique_together = ['content_type', 'object_id', 'slug']
Admin:
class GenericAttachmentInline(generic.GenericTabularInline):
model = GenericAttachment
class ParentAdmin(admin.ModelAdmin):
inlines = [AttachmentInline, GenericAttachmentInline]
admin.site.register(Attachment, admin.ModelAdmin)
admin.site.register(GenericAttachment, admin.ModelAdmin)
admin.site.register(Parent, ParentAdmin)