在 Django ModelSerializer 中无法将需要的字段标记为 false

In Django ModelSerializer unable to mark a field required as false

我正在尝试在 Django Restframework 的 ModelSerializer 中将字段 investor 设置为 False

class WatchListSerializer(serializers.ModelSerializer):

    class Meta:
        model = WatchList
        fields = ['id', 'investor', 'property']
        extra_kwargs = {
            'investor' : {
                'required' : False
            }
        }

但是,这两个字段在模型中都定义为 ForeignKeys。正如您在上面的实现中看到的,我试图使用 extra_kwargs 覆盖字段 investor 的默认实现。不幸的是,它仍然要求提供 investor.

的值

这是模型Watchlist -

class WatchList(BaseModel):

    investor = models.ForeignKey(User, on_delete=models.PROTECT, blank=False, null=True)
    property = models.ForeignKey(Properties, on_delete=models.PROTECT, blank=False, null=True)

    class Meta:
        
       unique_together = (('investor', 'property',))

    def __str__(self):
        
        return f'Watch List Object {self.id}:'

使用 blank=… parameter [Django-doc],您可以在 ModelFormModelAdminModelSerializer 和将数据处理成模型对象的代码的其他部分。

因此您可以通过以下方式禁用此功能:

class WatchList(BaseModel):
    # …
    property = models.ForeignKey(
        Properties,
        on_delete=models.PROTECT,
        <b>blank=True</b>,
        null=True
    )