django精选内容领域

时间:2010-01-22 06:41:21

标签: django django-models django-templates

昨天发了一个问题,但我不太清楚我在尝试什么。我正在努力寻找有关如何最好地实现这一目标的任何有用的教程,以便在正确的方向上轻推非常感激。

我已经建立了一个引用django_content_type的模型。我的想法是使用这个模型来引用其他模型,这样它们就可以被标记为“特色”内容,而不必在每个模型上放置一个新的“isFeatured”字段。

我希望能够做到的是每个模型的管理员表单上都会出现一个复选框,表示内容是否有特色。

class FeaturedContent(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

首先,这是正确的方法吗?

我是否需要创建自定义表单/模型字段?以及如何将此字段引入管理模板?

我一直在查看(django.contrib.contenttypes)generic.py,你可以清楚地看到模板数据的加载位置以及正在使用的模板。我想知道是否需要扩展这个类而不是编写自己的字段?

感谢您的帮助,

詹姆斯

1 个答案:

答案 0 :(得分:0)

在我看来,这不是正确的方法。最好将abstract base classesBooleanField一起使用,如下所示:

class FeaturedModel(models.Model):
    is_featured = models.BooleanField(default = False)

    class Meta:
        abstract = True

class Foobar(FeaturedModel):
    title = models.CharField(max_length = 200)
    ...

通过这种方式,您可以获得每个模型的所有优点,使其具有您可以使用的非常自己的is_featured字段,而不会出现内容类型的复杂性。