Django将数据插入manytomanyfield
我正在尝试使用post请求插入数据 我有一些关于数组的数据,因为它们有很多字段 但我在插入数据时遇到了以下错误Django将数据插入manytomanyfield,django,Django,我正在尝试使用post请求插入数据 我有一些关于数组的数据,因为它们有很多字段 但我在插入数据时遇到了以下错误 _setattr(self, prop, kwargs[prop]) File "/Users/soubhagyapradhan/Desktop/upwork/eligibility-checkr/backend/eligibility_env/lib/python3.8/site-packages/django/db/models/fields/related_
_setattr(self, prop, kwargs[prop])
File "/Users/soubhagyapradhan/Desktop/upwork/eligibility-checkr/backend/eligibility_env/lib/python3.8/site-packages/django/db/models/fields/related_descriptors.py", line 536, in __set__
raise TypeError(
TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use groups.set() instead.
型号:
class Policy(TimeStampedModel):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, verbose_name=_('id'))
hmo = models.ForeignKey(to=HMO, on_delete=models.CASCADE, verbose_name=_('hmo'))
name = models.CharField(max_length=250, verbose_name=_('name'))
number = models.CharField(max_length=250, verbose_name=_('number'), unique=True)
organization = models.ForeignKey(to=Organization, on_delete=models.CASCADE, verbose_name=_('organization'))
groups = models.ManyToManyField(to=Group, verbose_name=_('groups'))
enrollee = models.ManyToManyField(to=Enrollee, verbose_name=_('enrollee'))
start_date = models.DateField()
end_date = models.DateField()
commencement_date = models.DateField(null=True, blank=True)
视图:
我在post方法中发送的正文中的数据:
{
"hmo" : "600d10ec-d5b8-449e-a521-dd986408ca98",
"name" : "soubhagya",
"number": "9853092550",
"organization": "ab9f7b1d-51f3-460f-ba99-2b38d9c12682",
"groups": ["340ba243-c692-4a09-b819-af1cf3986625"],
"enrollee":["600d10ec-d5b8-449e-a521-dd986408ca98"],
"start_date": "2020-10-10T00:00:00",
"end_date": "2020-10-10T00:00:00"
}
模型
这些密钥“组”的发送值是什么?[“340ba243-c692-4a09-b819-af1cf3986625”],“加入者”:[“600d10ec-d5b8-449e-a521-dd986408ca98”],这些是ID uuid
{
"hmo" : "600d10ec-d5b8-449e-a521-dd986408ca98",
"name" : "soubhagya",
"number": "9853092550",
"organization": "ab9f7b1d-51f3-460f-ba99-2b38d9c12682",
"groups": ["340ba243-c692-4a09-b819-af1cf3986625"],
"enrollee":["600d10ec-d5b8-449e-a521-dd986408ca98"],
"start_date": "2020-10-10T00:00:00",
"end_date": "2020-10-10T00:00:00"
}
groups = models.ManyToManyField(to=Group,blank=True, verbose_name=_('groups'))
enrollee = models.ManyToManyField(to=Enrollee,blank=True, verbose_name=_('enrollee'))
def create(self, request):
data = request.data
hmo = data.get("hmo")
name = data.get("name")
number = data.get("number")
organization = data.get("organization")
groups = data.getlist("groups")
enrollee = data.getlist("enrollee")
start_date = data.get("start_date")
end_date = data.get("end_date")
obj = models.Policy.objects.create(
hmo_id=UUID(hmo),
name=name,
number=number,
organization_id=UUID(organization),
start_date=start_date,
end_date=end_date
)
for group in groups:
obj.groups.add(Group.objects.get(id=group)
for enroll in enrollee:
obj.enrollee.add(Enrollee.objects.get(id=enroll)
obj.save()