django-models - 字段“tag_number”需要一个数字,但得到“КР-02211”
问题描述
我有这个问题,我的 urls.py 是:
path('cabinet/<str:pk>/update/',
views.BookUpdateView.as_view(),
name='book-update'),
模型.py
tag_number = models.PositiveIntegerField('Tag number', validators=[
MinValueValidator(1),
MaxValueValidator(MAX_TAG_NUMBER),
])
视图.py
class BookUpdateView(core.UpdateView):
form_class = TagForm
template_name = 'book_update.html'
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.tag_number = self.object.generate_tag()
self.object.save()
return super().form_valid(form)
为什么我有这个错误?
Field 'tag_number' expected a number but got 'КР-02211'.
解决方案
您.generate_tag()
不会返回您的tag_name
字段可接受的类型的对象。实际上,您的tag_name
字段是 a PositiveIntegerField
,这意味着它只能存储整数,而不是文本。但是,您会generate_tag()
返回KP-02211
,虽然它确实以数字序列结尾,但它以 开头KP-
,并且无法存储。
您可以将字段更改为 a CharField
,例如:
class SomeModel(models.Model):
# …
tag_number = models.CharField(max_length=10)
或者您可以更改generate_tag
方法以仅返回 1 和MAX_TAG_NUMBER
.
推荐阅读
- react-native - 在标题选项卡,本机基础中禁用左边距和右边距
- c++ - llvm getelementptr 得到错误的值
- laravel - 在 Chrome 浏览器中单击后退按钮时显示 HTML 代码?
- reactjs - 如何将设置状态抛出到全局变量
- excel - 将一个单元格的字符串展开为两个单元格
- java - MainActivity.java:使用或覆盖已弃用的 API
- asp.net-core - Blazor 应用程序中是否已实现访问拒绝路径
- python - 如何在python中的fpdf中的write方法中给出理由
- javascript - 如何将javascript中的jinja表达式与转义序列字符串进行比较?
- php - 使用行号清除行并将其替换为给定值