Opened 2 years ago

Last modified 2 years ago

#33907 closed Bug

Uniqueconstraints voided in when using GenericTabularInline — at Version 1

Reported by: Mohamed Alnahhas Owned by: nobody
Component: contrib.contenttypes Version: 4.1
Severity: Normal Keywords:
Cc: Mohamed Alnahhas Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Mohamed Alnahhas)

Using Uniquecontraints, I get an error that the object already exist when I create a new object in the Skill_level admin page. However creating the same object through GenericTabularInline gives no errors and the creation is successful when it should not be. So basically Useconstraints is not working at all with GenericTabularInline

Generic field model:

class Skill_level(models.Model):
    level = models.IntegerField(default=1)
    user = models.ForeignKey(User, related_name="skill_level",on_delete=models.CASCADE)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveBigIntegerField()
    content_object = GenericForeignKey("content_type", "object_id")

        
    class Meta:
        indexes = [
            models.Index(fields=["content_type", "object_id"]),
        ]
        constraints = [
            UniqueConstraint(fields=['user','content_type', 'object_id'], name='unique_object')
        ]

Generic relation model:

class Subject(models.Model):
    title = models.CharField(max_length=100)
    skill_level = GenericRelation(Skill_level, related_query_name="subject")

    def __str__(self):
        return f"{self.title}"

Admin.py:

class Skill_levelInline(GenericTabularInline):
    model = Skill_level
    extra = 0

class Skill_levelAdmin(admin.ModelAdmin):
    model = Skill_level
    fields = ['user', 'level', 'contnet_type', 'object_id', 'content_object']
    readonly_fields = ["content_object"]

class SubjectAdmin(admin.ModelAdmin):
    inlines = [Skill_levelInline]
    extra = 0

admin.site.register(Skill_level)
admin.site.register(Subject, SubjectAdmin)

Change History (1)

comment:1 by Mohamed Alnahhas, 2 years ago

Description: modified (diff)
Summary: Useconstraints voided in when using GenericTabularInlineUniqueconstraints voided in when using GenericTabularInline
Note: See TracTickets for help on using tickets.
Back to Top