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)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/33907>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.