我正在使用contenttypes框架在我的网站上创建“精选内容”功能。我基本上是通过定义这样的模型来完成的:
class FeaturedContent(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
我现在想要做的是在我的管理区域内的每个模型编辑/创建页面上都有一个勾选框,当勾选并提交时,会将内容引用添加到FeaturedContent。未选中时,同样删除引用。
如果有更好的方法可以做到这一点,请告诉我。从我所看到的,使用contenttypes是可行的方法。
非常感谢!
答案 0 :(得分:0)
您需要为管理员中需要此选项的每个模型创建一个stackinline管理员。
如下所示:
class ObjectInline(admin.StackedInline):
model = YourFancyModelthatisFeatured
extra = 0
class FancyModelAdmin(admin.ModelAdmin):
inlines = [ObjectInline]
但是这会在默认小部件中提供内联,因此您还需要定义一个表单以自定义复选框小部件。