Как исправить «недопустимый аргумент ключевого слова для этой функции» в ModelSerializer - PullRequest
1 голос
/ 10 апреля 2019

Я работаю над ModelSerializers, это немодельное поле, которое uploaded_files = serializers.FileField(required=True, source='files') в BlogSerializer. uploaded_files не принадлежит BlogModel.

При попытке загрузить это дает мне 'files' is an invalid keyword argument for this function я знаю, files не является полем в BlogModel, но я пытался добавить метод свойства files(self): в BlogModel, который сделал тоже не работает.

models.py

class BlogModel(models.Model):

    BLOG_STATUS = (
        ('PUBLISH', 'Publish'),
        ('DRAFT', 'Draft'),
    )

    blog_id = models.AutoField(primary_key=True)
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name='blogs')
    title = models.CharField(max_length=255)
    content = models.TextField(blank=True, null=True)
    status = models.CharField(max_length=7, choices=BLOG_STATUS)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta():
        db_table = 'blogs'
        verbose_name = 'Blog'
        verbose_name_plural = 'Blogs'

    def __str__(self):
        return self.title

    @property
    def files(self): #here is the property i added
        return 'do something'

serializers.py


class BlogFilesSerializer(ModelSerializer):
    created_at = serializers.SerializerMethodField()
    updated_at = serializers.SerializerMethodField()

    class Meta:
        model = BlogFilesModel
        fields = ('blog_files_id', 'blog', 'path',
                  'created_at', 'updated_at')
        extra_kwargs = {
            'path': {
                'error_messages': {
                    'blank': 'File is required'
                },
            }
        }


class BlogSerializer(ModelSerializer):
    blog_files = serializers.SerializerMethodField()
    uploaded_files = serializers.FileField(required=True, source='files')
    blog_created_at = serializers.SerializerMethodField(read_only=False)

    class Meta:
        model = BlogModel
        fields = ('blog_id', 'user', 'title', 'content',
                  'status','blog_files', 'blog_created_at',
                  'uploaded_files',
                  )


error trace back

Надеюсь, я хорошо объяснил мою проблему.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...