我有两个模型:
class Album(models.Model):
code = models.CharField(max_length=10, primary_key=True, default=_create_access_code, verbose_name=_("Id"))
name = models.CharField(max_length=200, verbose_name=_("Name"))
description = models.TextField(null=True, blank=True, verbose_name=_("Description"))
company = models.ForeignKey(Company, on_delete=models.PROTECT, related_name='albums', verbose_name=_("Company"))
access_code = models.CharField(max_length=10, default=_create_access_code, verbose_name=_("Internal Use"))
class Meta:
verbose_name = _("Album")
verbose_name_plural = _("Albums")
def __str__(self):
return "[{}] {} ({})".format(self.pk, self.name, self.company.id)
class Photo(models.Model):
name = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Name"))
album = models.ForeignKey(Album, on_delete=models.CASCADE, related_name='photos', verbose_name=_("Album"))
photo = models.ImageField(verbose_name=_("Photo"))
class Meta:
verbose_name = _("Photo")
verbose_name_plural =_("Photos")
def __str__(self):
return "[{}] {}".format(self.pk, self.name)
我正在尝试在模型Albums
的 ModelViewSet 上发布帖子,但是出现错误消息,指示必填字段photos
。甚至OPTIONS
方法都表明它是必需的。
如何指示 DRF 不考虑按要求查找字段?是某些序列化程序设置吗?
答案 0 :(得分:0)
您可以在序列化器的字段中添加required = False。
photos = PhotoSerializer(many=True, required=False)
类似这样的事情。您可以发布序列化程序吗?
答案 1 :(得分:0)
验证错误的起因是models.py
。因此,最好在您的 null=True
模型中将 Photo
设置为
class Photo(models.Model):
# your code
photo = models.ImageField(verbose_name=_("Photo"),null=True)
# your code
并进行数据库迁移