Python m2m关系不在django中显示或保存
我正在制作django应用程序。Python m2m关系不在django中显示或保存,python,django,django-models,many-to-many,m2m,Python,Django,Django Models,Many To Many,M2m,我正在制作django应用程序。 这大致相当于我的模型。py 我需要A和B之间的m2m关系来通过另一个模型,因为我需要在那里存储额外的数据。 现在有一个问题-当我尝试在自定义视图中保存模型a的实例时,与B实例的关系不会被保存,无论我是否选择它们。 当我转到并尝试从那里创建A的实例时,我甚至看不到用于选择与B的关系的合适字段(我想应该是) 有人能解释一下为什么不保存关系,甚至不在/admin中显示关系吗? 下面的代码大致相当于我在views.py中的代码: class A(Model):
这大致相当于我的模型。py
我需要A和B之间的m2m关系来通过另一个模型,因为我需要在那里存储额外的数据。
现在有一个问题-当我尝试在自定义视图中保存模型a的实例时,与B实例的关系不会被保存,无论我是否选择它们。 当我转到并尝试从那里创建A的实例时,我甚至看不到用于选择与B的关系的合适字段(我想应该是
)
有人能解释一下为什么不保存关系,甚至不在/admin中显示关系吗?下面的代码大致相当于我在views.py中的代码:
class A(Model):
to_b = ManyToManyField('B', blank=True, through='AtoB')
class B(Model):
to_a = ManyToManyField('A', blank=True, through='AtoB')
class AtoB(Model):
a = ForeignKey('A', on_delete=CASCADE)
b = ForeignKey('B', on_delete=CASCADE)
usr = ForeignKey(settings.USER, on_delete=CASCADE)
# some other fields
在URL.py中,我指定了如下附加参数:
views.Create.as\u视图(model=models.A,fields=['to\u b'])
它不起作用。如果您使用自己的manytomy中间表,则必须自己手动管理和保存对象。使用Django的内置函数是行不通的
保存对象A
,然后保存对象B
,然后将关系保存在AtoB
表中(该表也是一个对象)
[…]请注意,如果您使用的是中间体
多对多关系的模型,一些相关经理的
方法被禁用,因此这些示例中的一些无法用于此类
模型
此处解释了您的错误:请共享您尝试创建此关系的代码。谢谢。在这种情况下,制作m2m场有什么意义吗?我的意思是
to_a
和to_b
字段都可以是ForeignKey
to AtoB模型。如果我在两个类之间有一个连接,这两个类需要ObjectA related ton
ObjectsB,反之亦然,我会使用多个关系。从某种意义上说,多个关系只是另一个表的ForeinKey,但Django提供的抽象级别更高,管理这些对象更快、更轻松。例如,您可以使用object\u a.批量添加对象到\u b\u set.add(*QuerySet[])
。我还想在这些字段中添加一个相关的\u名称
,使其更简单。
class Create(CreateView):
model = None # A or B
template_name = 'something.html'
def form_valid(self, form):
self.object = form.save(commit=False)
form.save()
return HttpResponseRedirect(self.get_success_url())
a_to_b = AtoB.objects.create(a=object_a, b=object_b, user=self.request.user)
print(a_to_b)