如何在django和djangorestframework中对创建API进行自定义验证?

如何在django和djangorestframework中对创建API进行自定义验证?,django,django-rest-framework,Django,Django Rest Framework,这是我的问题,我正在创建地址模型,在那个城市,地区,我接受空值,因为对于一些API视图,我将接受空值,但另一个API,我将调用相同的模型,当我想验证该字段是必需的时,它是如何可能的下面是我的代码示例 models.py class Address(models.Model): address_line1 = models.CharField(max_length=250) address_line2 = models.CharField(max_length=250, blank

这是我的问题,我正在创建地址模型,在那个城市,地区,我接受空值,因为对于一些API视图,我将接受空值,但另一个API,我将调用相同的模型,当我想验证该字段是必需的时,它是如何可能的下面是我的代码示例

models.py
class Address(models.Model):
    address_line1 = models.CharField(max_length=250)
    address_line2 = models.CharField(max_length=250, blank=True, null=True)
    city = models.ForeignKey('Cities', on_delete=models.DO_NOTHING, blank=True, null=True)
    district = models.ForeignKey('Districts', on_delete=models.DO_NOTHING, blank=True, null=True)

class Assignaddress(models.Model):
    address = models.ForeignKey(Address, on_delete=models.CASCADE)
    owner_name = models.CharField(max_length=255)

class dont`Assignaddress(models.Model):
    address = models.ForeignKey(Address, on_delete=models.CASCADE)
    owner_name = models.CharField(max_length=255)
现在在serializer.py中

class AddressSerializer(serializers.ModelSerializer):

    class Meta:
        model = Address
        fields = ('address_line1','address_line2','city','district')

class AssignaddressSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Assignaddress
            fields = ('address ','owner_name ')

class dont`AssignaddressSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = dont`Assignaddress
            fields = ('address ','owner_name ')
现在,我如何验证您必须通过的城市和地区地址是必需的,而不必指定地址


很抱歉没有写入views.py,所以在您的序列化程序中,您想接受空值吗?您可以使用
allow_null
和/或
required
(对于反序列化期间不应提供的字段)执行此操作。请务必检查相应的Django Rest框架

示例(内存不足-查看Django Rest框架文档了解特定用例):


我的解决方案是您想要的还是我误解了您的问题?谢谢您的更新,我只是想知道如何从外键关系中设置city and district字段为required=True,或者有任何示例代码供我参考understand@Gowtham但我不确定我是否正确理解了您的意思——我编辑了我的答案,并为您提供了一个允许空值的PrimaryKeyRelatedField示例传递给序列化程序。
class AssignaddressSerializer(serializers.ModelSerializer):
    address = serializers.PrimaryKeyRelatedField(many=False, allow_null=True)
    class Meta:
        model = Assignaddress
        fields = ('address ','owner_name ')