【发布时间】:2017-02-21 10:00:59
【问题描述】:
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
我正在制作一个 django 应用程序。
这大致相当于我的 models.py
我需要 A 和 B 之间的 m2m 关系来通过另一个模型,因为我需要在那里存储额外的数据。
现在有一个问题 - 当我尝试在我的自定义视图中保存模型 A 的实例时,无论我是否选择它们,都不会保存与 B 实例的关系。
当我转到http://127.0.0.1:8000/admin 并尝试从那里创建 A 的实例时,我什至看不到用于选择与 B 关系的正确字段(我猜应该是 <select multiple>)强>.
有人可以解释一下为什么关系没有保存,甚至没有显示在 /admin 中吗?
这里的代码大致相当于我在views.py中的代码:
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())
在 urls.py 中,我指定了额外的参数,如下所示:
views.Create.as_view(model=models.A, fields=['to_b'])
【问题讨论】:
-
请分享您尝试创建此关系的代码。
标签: python django django-models many-to-many m2m