自定义Django内容类型

自定义Django内容类型,django,django-models,django-admin,django-contenttypes,Django,Django Models,Django Admin,Django Contenttypes,我有一个这样的模型: class BlockedItem(models.Model): name = models.CharField(max_length=244) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'ob

我有一个这样的模型:

class BlockedItem(models.Model):
    name = models.CharField(max_length=244)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    def __unicode__(self):
        return self.name
  • 在django admin中,
    content\u type
    获取所有模型。我可以只提供
    内容类型的想要的型号吗

  • object\u id
    中,有没有办法从列表中选择而不是输入
    object\u id


如果您只想要一些内容类型的型号,您可以使用

limit_choices = models.Q(app_label = 'myapp', model = 'MyModel') | models.Q(app_label = 'myotherapp', model = 'MyModelOtherModel') )
content_type = models.ForeignKey(ContentType, limit_choices_to = limit_choices )

非常感谢,但是“对象id”呢?我想我必须使用javascript来收集所选对象的项。我是对的吗?我认为一个解决方案可以(不确定它是否更好)覆盖对象的管理表单,以获得具有所需值的预填充ChoiceFields。当您更改内容类型时,您需要一些javascript从一个ChoiceField切换到另一个ChoiceField,只需检查模型是否以小写字母开头,比如mymodel而不是mymodel