我有以下代码,它应该创建一个MyConfig对象。但是,它并不是因为app_model总是返回为None。
我们的想法是从一些精选的内容类型中进行选择,然后添加一个密钥,生成的配置将触发一堆服务。但是,每当我保存表单时,存储在app_model中的contenttype始终为None,这显然是不可取的。
这是在Django1.8
这是管理员:
class ContentTypeModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return "{}-{}".format(obj.app_label, obj.model)
class MyConfigForm(ModelForm):
class Meta:
model = models.MyConfig
fields = '__all__'
def __init__(self, *args, **kwargs):
super(MyConfigForm, self).__init__(*args, **kwargs)
self.fields['app_model'].label = "App Name"
app_model = ContentTypeModelChoiceField(
ContentType.objects.filter(
app_label__startswith='myApp',
model="myModel",
),
empty_label="Choose a model",
)
class MyConfigAdmin(admin.ModelAdmin):
model = models.MyConfig
form = MyConfigForm
list_display = (<display fields>
)
search_fields = (<search fields>
)
excluded_fields = ('app_model')
以下是模型本身:
class MyConfig(models.Model):
app_model = models.ForeignKey(ContentType, null=True)
ref_key = models.CharField(max_length=32, null=True)
答案 0 :(得分:0)
不幸的是,我的两条腿之间有一条尾巴。丢失的代码是包含excluded_fields
的{{1}}。我认为这会将其从显示的字段中删除,但它实际上会将其从保存时保存到模型中的数据中删除。
感谢所有关注此事的人。许多道歉。