我正在使用 Django REST Framework 在我的数据库/Django 模型上运行 CRUD 进程。我用于存储客户端数据的模型非常简单,只有一个字段给我带来了问题:用于存储自定义或自动生成字符串的 CharField。
class Client(models.Model):
link = models.CharField(max_length=254, default=link_generator())
Run Code Online (Sandbox Code Playgroud)
我/clients/使用表单输入向端点发出 POST 请求- 如果用户通过输入输入自定义字符串,它会按预期存储该字符串。如果他们将此字段留空,那很好 - 我想运行我的 link_generator 函数,它创建一个随机字符串(下面的代码)。相反,我收到一个错误 - Django REST Framework GUI 告诉我,“此字段可能不为空。” 但我无处指定它应该是必需的。如果我检查序列化程序,它会明确表示不需要:
>>> from landing.serializers import ClientSerializer
>>> serializer = ClientSerializer()
>>> print(serializer)
ClientSerializer():
id = IntegerField(label='ID', read_only=True)
name = CharField(max_length=50, required=False)
email = EmailField(max_length=254, required=False)
notes = CharField(allow_blank=True, required=False, style={'type': 'textarea'})
link = CharField(max_length=254, required=False)
link_expired = BooleanField(required=False)
created = DateTimeField(read_only=True)
updated = DateTimeField(read_only=True)
Run Code Online (Sandbox Code Playgroud)
更新:添加带有改进建议的序列化程序代码 - 非常基本:
class …Run Code Online (Sandbox Code Playgroud)