菲尔德'tag_number'期待一个数字,但得到了'КР-02211'



我有这个问题我的url .py是:

path('cabinet/<str:pk>/update/',
views.BookUpdateView.as_view(),
name='book-update'),

models.py

tag_number = models.PositiveIntegerField('Tag number', validators=[
MinValueValidator(1),
MaxValueValidator(MAX_TAG_NUMBER),
])

views.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字段是PositiveIntegerField,因此这意味着它只能存储整数,而不能存储文本。然而,您的generate_tag()返回KP-02211,虽然它以数字序列结束,但它以KP-开始,并且不能存储。

您可以将字段更改为CharField,例如:

class SomeModel(models.Model):
# …
tag_number = models.CharField(max_length=10)

或者您可以修改generate_tag方法,使其只返回1到MAX_TAG_NUMBER之间的数字。

最新更新