直接分配给多对多的正面

问题描述 投票:0回答:1

我正在尝试将值分配给ManyToManyField,但是,我在数据库上设置值的任何尝试均失败。

下面是我的简化模型。py

class AppointmentRequest(models.Model):
    my_name = models.TextField(default='')
    requester_name = models.TextField(default='')
    meeting_date = models.TextField(default='')


class CustomUser(AbstractUser):
    firstname = models.TextField(default='')
    appointments = models.ManyToManyField(AppointmentRequest)

下面是views.py中处理某些功能的功能:

from .models import AppointmentRequest

def book_appointment(request, template_name)
    apt_request = AppointmentRequest()
    apt_request.requester_name = requesting_user
    apt_request.meeting_date = date
    apt_request.save()
    update_user.appointments = apt_request
    update_user.save()

通过以上操作,我得到以下错误Direct assignment to the forward side of a many-to-many set is prohibited. Use appointments.set() instead.

但是,如果我使用set而不是=,则会出现以下错误django manytomany 'str' object has no attribute 'set'。我不确定是什么问题。请帮助。

django many-to-many
1个回答
0
投票

从您的代码尚不清楚update_user是什么,但是它可能不是CustomUser的实例,正如错误所提到的,您不能使用直接分配向M2M添加元素,必须使用[C0 ]或add(更多信息:set)。

检查https://docs.djangoproject.com/en/2.2/topics/db/examples/many_to_many/的类型,检查其来源,是否确定是您的update_user实例?该名称使人想起一个功能。

© www.soinside.com 2019 - 2024. All rights reserved.