0

我在 Django 中有一些这样的模型:

class Object(models.Model):
    ...

class ObjectFeatures(models.Model):
    class Meta:
        unique_together = (('object', 'feature'),)
    count = models.PositiveSmallIntegerField()
    object = models.ForeignKey(...)
    feature = models.ForeignKey(...)

class Feature(models.Model):
    is_number = models.BooleanField()
    ...

我有一个对象,在这个对象中是管理面板中的内联表单,带有ObjectFeature. 在那里,您可以选择要从功能中添加的功能,以及可用该功能的数量。

定义该is_number功能是否需要一个数字,或者如果为 false,则需要一个布尔值(计数为 0 或 1)。

无论如何TabularInline在它需要一个布尔值而不是整数时显示一个复选框,尽管它是一个IntegerField

另一种可能性是在object_features. 根据 中的值,我是否有可能只显示其中一个is_number

在 admin.py 中:

class ObjectFeatureInline(admin.TabularInline):
    model = ObjectFeature
    can_delete = True
    verbose_name_plural = 'Object features'

class ObjectAdmin(admin.ModelAdmin):
    inlines = (ObjectFeatureInline,)
    ...
4

1 回答 1

0

在你的内联

    def new_field(self, obj):
        if type(obj.is_number) is bool:
            do stuff - as bool
        else:
            do other stuff , maybe check if int and so on...
    new_field.allow_tags = True
    new_field.short_description = 'is_number verbose'

将 new_field 添加到内联的 readonly_fields

于 2016-05-04T12:44:50.520 回答