Django:通过relationshiop使用表单和多个关系
我试图通过规范来解决一个涉及“多人”关系的具体问题。 我已经尝试使用inline_factory,但无法解决问题 我有这些桌子Django:通过relationshiop使用表单和多个关系,django,forms,model,Django,Forms,Model,我试图通过规范来解决一个涉及“多人”关系的具体问题。 我已经尝试使用inline_factory,但无法解决问题 我有这些桌子 class Person(models.Model): id = models.AutoField(primary_key=True) fullname = models.CharField(max_length=200) nickname = models.CharField(max_length=45, blank=True)
class Person(models.Model):
id = models.AutoField(primary_key=True)
fullname = models.CharField(max_length=200)
nickname = models.CharField(max_length=45, blank=True)
class Meta:
db_table = 'people'
class Role(models.Model):
role = models.CharField(max_length=200)
class Meta:
verbose_name_plural = 'roles'
db_table = 'roles'
class Study(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=255)
description = models.CharField(max_length=1000)
members = models.ManyToManyField(Person, through='Studies2People')
class Meta:
db_table = 'studies'
class Studies2People(models.Model):
person = models.ForeignKey(Person)
role = models.ForeignKey(Role)
study = models.ForeignKey(Study)
class Meta:
verbose_name_plural = 'studies2people'
db_table = 'studies2people'
unique_together = (('person', 'role', 'study'),)
#forms.py
from .models import Study, Person, Role, Studies2People
class RegisterStudyForm(ModelForm):
class Meta:
model = Study
fields = '__all__'
#View.py
class StudyCreateView(CreateView):
template_name = 'managements/register_study.html'
model = Study
form_class = RegisterStudyForm
success_url = 'success/'
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
return self.render_to_response(self.get_context_data(form=form))
上面的代码创建了一个表单,如:
Study.Title
Study.description
List of People
我想创建一个表格来填写所有涉及学习2人的字段,如下所示:
Study.Title
Study.description
Combo(people.list)
Combo(Role.list)
也许我应该从Studies2People开始,但我不知道如何显示所涉及的“内联”表单
提前谢谢
C.在等待能够通过一些例子解释m2m与(模型和视图)之间关系的人时,我以不同的方式解决了我的问题 我创造了三种形式。 1表格范本(研究) 2表单(带有ModelChoiceField(queryset=TableX.objects.all()的表单) 创建了一个类视图来管理get和post操作。(还有验证表单) 在post过程中,我使用“事务”来避免“伪造”数据 我希望有人能举一个m2m关系复杂的例子 问候 辛齐亚