Я работаю над 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',
)
Надеюсь, я хорошо объяснил мою проблему.
Спасибо.