嘿,我需要从表单创建模型。如果我需要创建另一个模型,该模型与从表单创建的对象模型有关系,则采用不同的方式。它必须像这样工作->我来到现场,获取用于创建模型对象的表单并保存新对象。然后->我有另一个模型,该模型与表单中的模型有关系。我需要自动创建关系模型对象-django从表单中获取新对象时。
尝试过任何可以帮助我的事情。我这样做,但是这次我有问题。 ->我的关系模型中有manytomany字段,并且我有manytomany字段->来自表单的用户。而且我无法使用此实例创建关系模型:(追溯:=(indirect("F"&Row())-indirect("C"&Row()))*60*24
但是我很累尝试((请帮忙,我怎么做?
views.py
TypeError at /ru/center/add/
Direct assignment to the forward side of a many-to-many set is prohibited. Use users_center.set() instead.
models.py
for x in form['users_center'].data:
name_center = form['name_center'].data
fullname_center = form['fullname_center'].data
ogrn = form['ogrn_center'].data
head_center = form['head_center'].data # user id
many_users = form['users_center'].data
user_center = x # user id
new_center = Center.objects.create(name_center=name_center,
fullname_center=fullname_center,
ogrn_center=ogrn,
head_center=User.objects.get(id=head_center),
users_center=User.objects.get(id=int(x)))
new_center.save()
答案 0 :(得分:0)
两个模型之间的多对多关系暗示了一个联接表。该错误使您知道创建用户对象后必须设置关系,而不是在创建用户对象时尝试分配关系。您可以使用set()
或add()
来执行此操作。
所以尝试做:
new_center = Center.objects.create(
name_center=name_center,
fullname_center=fullname_center,
ogrn_center=ogrn,
head_center=User.objects.get(id=head_center),
)
users_center=User.objects.get(id=int(x))
new_center.users_center.add(users_center)
另外,将您的多对多字段重命名为复数以指示关系可能很有用。也许改为users_centers
。由于似乎用户可以有许多中心,而中心可以有许多用户。不过,这取决于您,不需要它起作用。