在 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],您可以在 ModelForm
、ModelAdmin
、ModelSerializer
和将数据处理成模型对象的代码的其他部分。
因此您可以通过以下方式禁用此功能:
class WatchList(BaseModel):
# …
property = models.ForeignKey(
Properties,
on_delete=models.PROTECT,
<b>blank=True</b>,
null=True
)
我正在尝试在 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],您可以在 ModelForm
、ModelAdmin
、ModelSerializer
和将数据处理成模型对象的代码的其他部分。
因此您可以通过以下方式禁用此功能:
class WatchList(BaseModel):
# …
property = models.ForeignKey(
Properties,
on_delete=models.PROTECT,
<b>blank=True</b>,
null=True
)