【问题标题】:ValueError at /borrow//borrow/ 的 ValueError
【发布时间】:2023-01-26 00:53:17
【问题描述】:

我正在尝试自动填充表格每当用户填写填充表的表单时一种.每当我填写表格以填充表格时一种,我遇到了这个错误。

Traceback (most recent call last):
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/dubsy/virtualenvs/djangoproject/libmain/books/views.py", line 21, in borrow
    borrower.save()
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/db/models/base.py", line 812, in save
    self.save_base(
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/db/models/base.py", line 878, in save_base
    post_save.send(
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 176, in send
    return [
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/home/dubsy/virtualenvs/djangoproject/libmain/books/models.py", line 84, in create_lending
    ApprovedLending.objects.create(member=row["member_id"])
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/db/models/query.py", line 669, in create
    obj = self.model(**kwargs)
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/db/models/base.py", line 541, in __init__
    _setattr(self, field.name, rel_obj)
  File "/home/dubsy/virtualenvs/djangoproject/lib/python3.9/site-packages/django/db/models/fields/related_descriptors.py", line 235, in __set__
    raise ValueError(

Exception Type: ValueError at /borrow/
Exception Value: Cannot assign "1": "ApprovedLending.member" must be a "User" instance.

这是我的模型.py

class A(models.Model):
    member = models.ForeignKey(User, on_delete=models.CASCADE, default="")
    book = models.ForeignKey(Books, on_delete=models.CASCADE, default="")
    library_no = models.CharField(default="", max_length=255, blank=True)
    staff_id = models.CharField(default="", max_length=255, blank=True)
    application_date = models.DateTimeField(auto_now_add=True)

class B(models.Model):
    member = models.ForeignKey(User, on_delete=models.CASCADE, default="", null=True)
    book = models.ForeignKey(Books, on_delete=models.CASCADE, default="", null=True)
    approved = models.BooleanField()
    approval_date = models.DateTimeField(auto_now_add=True, null=True)

这是我用来自动填充表格的功能当表的形式一种已填写。

@receiver(post_save, sender=BorrowBook)
def create_lending(sender, instance,**kwargs):
    data = BorrowBook.objects.values()
    for row in data:
        ApprovedLending.objects.create(member=row["member_id"])

我该如何解决这个问题。

【问题讨论】:

    标签: python django django-models django-signals


    【解决方案1】:

    正如错误所说:Exception Value: Cannot assign "1": "ApprovedLending.member" must be a "User" instance.

    您正在尝试直接分配 ID:

    ...
    ApprovedLending.objects.create(member=row["member_id"])
    ...
    

    相反,您应该检索 User (member) 实例:

    ...
    member = User.objects.get(id=row["member_id"])
    ApprovedLending.objects.create(member=member)
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多