如何用表格创建关系模型?

时间:2019-01-07 18:57:14

标签: python django

嘿,我需要从表单创建模型。如果我需要创建另一个模型,该模型与从表单创建的对象模型有关系,则采用不同的方式。它必须像这样工作->我来到现场,获取用于创建模型对象的表单并保存新对象。然后->我有另一个模型,该模型与表单中的模型有关系。我需要自动创建关系模型对象-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()

1 个答案:

答案 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。由于似乎用户可以有许多中心,而中心可以有许多用户。不过,这取决于您,不需要它起作用。