加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django Rest Framework 2.4 TypeError:__ init __()得到一个意

发布时间:2020-12-20 13:44:31 所属栏目:Python 来源:网络整理
导读:这有点奇怪,我得到这个错误 TypeError:init()得到一个意外的关键字参数’allow_none’ 在DRF 2.4上,它在DRF 2.3.14中工作正常 它似乎与模型中的验证有关,因为我尝试使用ProductImg模型,它工作正常,所以我知道模型中有问题,我甚至只尝试获取id,但我总是得到
这有点奇怪,我得到这个错误
TypeError:init()得到一个意外的关键字参数’allow_none’
在DRF 2.4上,它在DRF 2.3.14中工作正常

它似乎与模型中的验证有关,因为我尝试使用ProductImg模型,它工作正常,所以我知道模型中有问题,我甚至只尝试获取id,但我总是得到相同的错误消息,现在我想我唯一的选择是使用DRF以前的版本,我想在报告错误之前得到一个意见,因为这是我第一次使用DRF

constants.py

GENDER =(
    ('woman','Woman'),('man','Man'),('none','None'),)

PRODUCT_TYPE =(
    ('top','Top'),('bottom','Bottom'),('dress','Dress'),('accessories','accessories'),)

serializers.py

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ('id','name')

models.py *

class ProductType(models.Model):
    gender = models.CharField(choices=GENDER,max_length=10)
    type = models.CharField(max_length=20)


class Category(models.Model):
    name = models.CharField(max_length=155,verbose_name=_('Category'))
    type = models.ForeignKey(ProductType,related_name='categories_for',verbose_name=_('Category type'))
    meta_description = models.TextField(verbose_name=_('Meta Description'))
    meta_keywords = models.TextField(verbose_name=_('Meta Keywords'))
    parent = models.ForeignKey('Category',related_name='children',verbose_name=_('Category Parent'),blank=True,null=True)
    slug = models.SlugField(blank=True,verbose_name=_('URL alias'))



class Trends(models.Model):
    name = models.CharField(max_length=255,verbose_name=_('Trends'))
    banner = ProcessedImageField(verbose_name=_('Banner'),upload_to='trends',processors=[ResizeToFit(width='1200',upscale=False)],format='JPEG',options={'quality': 70})
    description = models.TextField(verbose_name=_('Description'))
    slug = models.SlugField(blank=True)
    pubDate = models.DateTimeField(auto_now_add=True,verbose_name=_('Date published'))
    gender = models.CharField(choices=GENDER,max_length=10)
    promoted = models.BooleanField(verbose_name=_('Promoted'),default=False)

class Product(models.Model):
    reference = models.CharField(max_length=50,verbose_name=_('Reference'))
    name = models.CharField(max_length=255,verbose_name=_('Product Name'))
    description = models.TextField(blank=True,verbose_name=_('Product Description'))
    color_code = models.CharField(max_length=11,verbose_name=_('Color Code'))
    color_web = models.CharField(max_length=7,verbose_name=_('Web Color'))
    size = models.CharField(max_length=11,verbose_name=_('Product Size'))
    price = models.IntegerField(verbose_name=_('Product Price'))
    price_promo = models.IntegerField(blank=True,null=True,verbose_name=_('Product Promo Price'))
    upc = models.CharField(max_length=155,verbose_name=_('UPC'))
    stock = models.IntegerField(verbose_name=_('Product Stock'))
    category = models.ForeignKey(Category,verbose_name=_('Estilo'))
    in_stores = models.BooleanField(default=True,verbose_name=_('Product Availability'))
    try_out = models.BooleanField(default=False,verbose_name=_('Try out Product'))
    pub_date = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)
    slug = models.SlugField(default='',verbose_name=_('URL alias'))
    blog = models.URLField(blank=True,verbose_name=_('Blog mention link'))
    parent_product = models.BooleanField(default=False,verbose_name=_('Main Product'))
    active = models.BooleanField(default=True,verbose_name=_('Active'))
    trends = models.ManyToManyField(Trends,verbose_name=_('Trends'),blank=True)
    photoshoot_id = models.CharField(max_length=255,verbose_name=_('Photoshoot ID'))

追溯

Traceback (most recent call last):
File "<console>",line 1,in <module>
File "/Users/jav/vn-azulu/lib/python2.7/site-packages/rest_framework/serializers.py",line 200,in __init__
self.fields = self.get_fields()
File "/Users/jav/vn-azulu/lib/python2.7/site-packages/rest_framework/serializers.py",line 236,in get_fields
default_fields = self.get_default_fields()
File "/Users/jav/vn-azulu/lib/python2.7/site-packages/rest_framework/serializers.py",line 721,in get_default_fields
field = self.get_field(model_field)
File "/Users/jav/vn-azulu/lib/python2.7/site-packages/rest_framework/serializers.py",line 910,in get_field
return ModelField(model_field=model_field,**kwargs)
File "/Users/jav/vn-azulu/lib/python2.7/site-packages/rest_framework/fields.py",line 400,in __init__
super(ModelField,self).__init__(*args,**kwargs)
TypeError: __init__() got an unexpected keyword argument 'allow_none'

解决方法

当试图重现问题时:如果我删除 django model translation的东西,我无法重现它.

name = models.CharField(max_length=155,verbose_name=_('Category'))

name = models.CharField(max_length=155,verbose_name='Category')

为所有模型执行此操作时,以及刺激数据.数据序列化很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读