2017-07-26 69 views
1

我想遍历ModelSerializer中的字段并希望使这些字段成为必需字段。这不起作用。我怎样才能做到这一点。有人请帮助我。django rest framwork在模型序列化程序中迭代通过字段

class CustomerSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Customer 

     fields = ("email", "phone_no", "full_name", "landline_no") 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 

     for field in self.fields: 
      self.fields[field].required = True 
      self.fields[field].allow_blank = False 
+0

您是否试过'超级(CustomerSerializer,self).__ init __(* args,** kwargs)'? – zaidfazil

+0

@zaidfazil它是蟒蛇3.它会工作 – tstudent

+0

调用'super()'就像这是推荐的方式。试试吧!我已经在我的机器上尝试过了,它工作正常。另外,你的意思是“不工作”,有没有错误? – zaidfazil

回答

2

可以在元类中添加额外的args作为一个ModelSerializer,像这样:

class Meta: 
    model = Customer 

    fields = ("email", "phone_no", "full_name", "landline_no") 
    extra_kwargs = {'email': {'required': True, 'allow_blank': False}} 

如果你需要这个的所有字段,那么你应该重新考虑Customer模型中的各个领域。您可以添加blank=False和/或null=False。 Rest框架在创建ModelSerializer时需要考虑这些信息

相关问题