程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法?

开发过程中遇到`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法的问题如何解决?下面主要结合日常开发的经验,给出你关于`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法的解决方法建议,希望对你解决`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法有所启发或帮助;

我正在尝试在我的借阅视图中启用 post 方法以启用管理员、从当前用户中选择以及从可用书籍中进行选择。

serializers.py
class BookListserializer(serializers.Modelserializer):
    authors = serializers.SlugrelatedFIEld(many = True,queryset = models.Author.objects.all(),slug_fIEld = 'name',) #To represent the relationship as a String instead of ID
    genre = serializers.SlugrelatedFIEld(many = True,queryset = models.Genre.objects.all(),slug_fIEld = 'name')


class Meta:
    model = models.book
    fIElds = ('name','authors','raTing','genre')

class Borrowedserializer(serializers.Modelserializer):
    who_borrowed = serializers.primaryKeyRelatedFIEld(queryset = get_user_R_219_11845@odel().objects.all(),source = 'who_borrowed.username',)
name = serializers.primaryKeyRelatedFIEld(queryset = models.book.objects.all(),source = 'name.name',)

#borrowed_date = serializers.datetiR_219_11845@eFIEld(format = "%H:%M,%d-%m-%Y")
#returned_date = serializers.datetiR_219_11845@eFIEld(format = "%H:%M,%d-%m-%Y" )

class Meta:
    model = models.borrowed
    fIElds = ('who_borrowed','name','has_returned','borrowed_date','returned_date',)

然后是我的模型

@H_894_5@models.py

class Book(models.Model):
name = models.CharFIEld(max_length = 150,)   #name of books
authors = models.ManyToManyFIEld(Author,)     
genre = models.ManyToManyFIEld(GenrE)       
publisher = models.ForeignKey(Publisher,on_delete = models.SET_DEFAulT,default = '2') 
#A book should have a publisher will include a none fIEld for books without publishers

pub_date = models.DateFIEld()
price = models.decimalFIEld(max_digits = 10,decimal_places = 2) 
isbn = models.CharFIEld(max_length = 13,unique = True,null = True,blank = True,valIDators = [MinLengthValIDator(13)]) 


class Borrowed(models.Model):    #Model for users borrowing and returning
name = models.ForeignKey(Book,on_delete = models.CASCADE,) #ConsIDer making one to many fIEld
borrowed_date = models.datetiR_219_11845@eFIEld(auto_Now_add = True,)   #Date is created as soon as instance is created
has_returned = models.BooleanFIEld(default = falsE)    #FIEld that determines if a model is returend or not
returned_date = models.datetiR_219_11845@eFIEld(null = True,)    #Date that changes as soon as book is returned
who_borrowed = models.ForeignKey(get_user_R_219_11845@odel(),default ='9c495b90-3900-43d1-875d-6b15d5d5ab55')

Django 可浏览 API 显示可供选择的书籍和用户借书的方式,但当我想发布请求时,它会显示标题中的错误。 我不知道如何创建一个允许显示这些选项并允许发布或放置请求的创建方法。

简而言之,如果我删除源参数,一切正常,但我希望显示的数据不是 ID 或 UUID,而是用户名和书名。

解决方法

可以参DRF- doc。

在您的情况下,以下更改应该足够了。

class Borrowedserializer(serializers.Modelserializer):
    who_borrowed = serializers.primaryKeyRelatedField(queryset = get_user_R_219_11845@odel().objects.all(),source = 'who_borrowed.username',)
    name = serializers.primaryKeyRelatedField(queryset = models.book.objects.all(),source = 'name.name',)

    class Meta:
        model = models.borrowed
        fields = ('who_borrowed','name','has_returned','borrowed_date','returned_date',)

    def create(self,validated_data):
        return models.borrowed.objects.create(**validated_data)
        # or 
        # return super(Borrowedserializer,self).create(validated_data)
,
class Borrowedserializer(serializers.Modelserializer):
who_borrowed = serializers.SlugRelatedField(queryset = get_user_R_219_11845@odel().objects.all(),slug_field = 'username')
name = serializers.SlugRelatedField(queryset = models.book.objects.all(),slug_field = 'name')

将“primaryKeyRelatedFields”更改为“SlugRelatedFields”也对我有用。

大佬总结

以上是大佬教程为你收集整理的`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法全部内容,希望文章能够帮你解决`.create()` 方法默认不支持可写点源字段。为序列化程序编写一个显式的 `.create()` 方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:方法