我在编辑现有数据并将其保存在django admin时收到MultiValueDictKeyError?

时间:2017-04-27 06:43:44

标签: python django django-models

我可以添加第一个数据条目,但在编辑现有数据或添加新数据之后会导致/ admin / api / digitalpost / 9b763eae-cb8b-4473-af5d-5d4d91323ae1 / change /中的MultiValueDictKeyError “u'contentlist_set-0-basemodel_ptr'”。

Models.py

class BaseModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    version = models.FloatField(default=1.0)
    created_at = models.DateTimeField(auto_now_add=True)

    def image_tag(self):
        self.url = 'http://127.0.0.1:8000/' + self.picture.name
        return u'<img src="%s" />' % self.picture.url
    image_tag.short_description = 'Thumbnail'
    image_tag.allow_tags = True

class Client(BaseModel):
    parent = models.ForeignKey('self',on_delete=models.SET_NULL, blank=True, null=True, related_name='brands')
    name = models.CharField(max_length=120, unique=True)
    picture = models.ImageField(upload_to="static/images/digital")
    list_display = ('name','parent',)
    description = models.CharField(max_length=250)

    def __unicode__(self):
        if self.parent:
            return "{} {}".format(self.parent.name, self.name)
        else:
            return self.name

    def parent_brand(self):
        return str(self)

    parent_brand.short_description = 'NAME'

    class Meta:
        ordering = ['parent__name','name']

class Category(BaseModel):
    title = models.CharField(max_length=64, unique=64)
    description = models.CharField(max_length=256, null=True, blank=True)

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['-created_at']
        verbose_name_plural = "categories"

    class DigitalPost(BaseModel):
        title = models.CharField(max_length=100)
        brand = models.ForeignKey(Client, on_delete=models.SET_NULL, blank=True, null=True, )
        launch_date = models.DateField(blank=True, null=True)
        order = models.IntegerField()

        def __unicode__(self):
            return self.title

        class Meta:
            ordering = ['order']


    class ContentList(BaseModel):
        title = models.CharField(max_length=100)
        description = models.CharField(max_length=256, null=True, blank=True)
        picture = models.ImageField(upload_to="static/images/digital", blank=True)
        post = models.ForeignKey(DigitalPost, on_delete=models.SET_NULL, null=True, blank=True)
        # post_category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)

        def __unicode__(self):
            return self.title

        class Meta:
            ordering = ['title']

admin.py

class ContentListForm(forms.ModelForm):
    class Meta:
        model = models.ContentList
        fields = '__all__'
class ContentListInline(admin.TabularInline):
    model = models.ContentList
    form = ContentListForm
    fk_name = 'post'
    exclude = ('id', 'version')


class DigitalPostForm(forms.ModelForm):
    class Meta:
        model = models.DigitalPost
        fields = '__all__'


@admin.register(models.DigitalPost)
class DigitalPostAdmin(ActiveStaffPermittedModel):
    inlines = [
        ContentListInline,
    ]
    form = DigitalPostForm
    actions = ['delete_selected']
    exclude = ('id', 'version',)
    readonly_fields = ('created_at',)
    def delete_selected(self, request, obj):
        for o in obj.all():
            self.delete_one(request, o)

    delete_selected.short_description = "Delete selected Posts"

0 个答案:

没有答案