Opened 2 years ago
Last modified 2 years ago
#33907 closed Bug
Useconstraints voided in when using GenericTabularInline — at Initial Version
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
Using Usecontraints, 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)
Note:
See TracTickets
for help on using tickets.