1
에 ManyToManyField 객체를 추가 할 수 없습니다심지어 <a href="https://docs.djangoproject.com/en/1.11/ref/models/relations/" rel="nofollow noreferrer">doc</a></p> <p>models.py에게 다음과 같은 후 내가 <code>ManyToManyField</code> 객체를 추가 할 수 없습니다입니다 장고
class Label(models.Model):
...
name = models.CharField(blank=False, max_length=100)
class Template(models.Model):
...
labels = models.ManyToManyField(Label, blank=True, related_name="labels")
그리고
>>> from content.models import Label, Template
>>> l1 = Label.objects.get_or_create(name='one') # saves in db
>>> l2 = Label.objects.get_or_create(name='two') # saves in db
>>> t1 = Template.objects.get(pk=1) # loads existing
>>> t1.labels.set([l1,l2]) # fails
이 오류가 발생합니다
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 1007, in set
self.add(*new_objs)
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 934, in add
self._add_items(self.source_field_name, self.target_field_name, *objs)
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 1083, in _add_items
'%s__in' % target_field_name: new_ids,
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/query.py", line 784, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/query.py", line 802, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1250, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1276, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1206, in build_filter
condition = lookup_class(lhs, value)
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/lookups.py", line 24, in __init__
self.rhs = self.get_prep_lookup()
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/fields/related_lookups.py", line 56, in get_prep_lookup
self.rhs = [target_field.get_prep_value(v) for v in self.rhs]
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/fields/related_lookups.py", line 56, in <listcomp>
self.rhs = [target_field.get_prep_value(v) for v in self.rhs]
File "/path/env3tt/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 966, in get_prep_value
return int(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Label'
파이썬 3.6에서 장고 1.11을 사용하고 있습니다.
을 다음과 같이
은 코드를 변경. 나는 문서에서'get_or_create()'를 찾았어야했다. –