如何修复字段“id”需要一个数字但在 django 管理面板中得到“描述”

问题描述

在 django admin 中,我尝试使用模型表单和 django-autocomplete-light 库 dal library 将值从模型 MetaTag 预填充到模型 ModelSEOMetadatum

我的模型:

class MetaTag(models.Model):
    name = models.CharField(max_length=50,null=True,blank=True)
    property = models.CharField(max_length=50,blank=True)
    def __str__(self):
        if self.name !=None  and self.property == None:
            return str(self.name)
        elif self.name == None  and self.property != None:
            return str(self.property)
        else:
            'name : ' + str(self.name) + ',property : ' +  str(self.property)

class SEOMetadatum(models.Model):
    class Meta:
        verbose_name_plural = "SEO Metadata"
    path = models.CharField(max_length=100,blank=True)
    name = models.CharField(max_length=50,blank=True)
    content = models.CharField(max_length=200,blank=True)
    content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE,blank=True)
    object_id = models.UUIDField(null=True,blank=True)
    content_object = GenericForeignKey('content_type','object_id')
class ModelSEOMetadatum(SEOMetadatum):
    class Meta:
        verbose_name_plural = "Model Metadata"
        proxy = True

我的表格

class ModelSEOMetadatumForm(forms.ModelForm):
    name = ModelChoiceField(required=False,queryset=MetaTag.objects.exclude(name__isnull=True).values_list('name',flat = True).distinct(),widget=autocomplete.ModelSelect2(url='SEO:name-autocomplete'))
    class Meta:
        model = ModelSEOMetadatum
        fields = ('content_type','object_id','name','content','property')

我的管理员

@admin.register(ModelSEOMetadatum)
class ModelSEOMetadatumAdmin(admin.ModelAdmin):
    list_display = ('id','property','content_object')
    fields = ('content_type','property')
    form  = ModelSEOMetadatumForm

我的网址

urlpatterns = [
    path('name-autocomplete/',NameAutocomplete.as_view(),name='name-autocomplete'),]

我的观点

class NameAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        if not self.request.user.is_authenticated:
            return MetaTag.objects.none()
        qs = MetaTag.objects.all()
        if self.q:
            qs = qs.filter(Q(name__istartswith=self.q) | Q(name__icontains=self.q))
        return qs

name 模型的 MetaTag 字段的值在 /add 操作中正确加载

我的问题出在 /change 操作上。我无法正确编辑,出现错误:字段“id”需要一个数字,但得到“描述”。

我该如何解决

enter image description here

enter image description here

在 cmd 中出现错误

 HTTP GET /admin/SEO/modelSEOMetadatum/34/change/ 500 []
ERROR HTTP GET /admin/SEO/modelSEOMetadatum/34/change/ 500 []

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)