2013-02-11 101 views
0

我有一个Event表,可存放2种类型的与会者:学生和工作人员。我将如何去检索那些处于学生专栏(多对多)的人,并将他们放入他们自己的表中?从多对多列中检索对象并放入新表

class Event(models.Model): 
    ... 
    students = models.ManyToManyField(StudentProfile, null=True, blank=True) 
    staff = models.ManyToManyField(StaffProfile, null=True, blank=True) 
    ... 

新表:??

class StudentAttendees(models.Model): 
    profile = models.ManyToManyField(StudentProfile, through='Event') 
    event = models.ForeignKey(Event) 
    created = models.DateTimeField(auto_now_add=True) 

回报:

django.core.management.base.CommandError: One or more models did not validate: 
profiles.studentattendees: 'profile' is a manually-defined m2m relation through model Event, which does not have foreign keys to StudentProfile and StudentAttendees 

感谢您的帮助提前。

回答

0

像这样的东西可能会奏效:

for some_event in Event.objects.all(): 
    student_attendees_object = StudentAttendees.objects.create(event=some_event) 
    for student in some_event.students_set.all(): 
     student_attendees_objects.profile.add(student) 

我不知道你想实现什么,但如果你需要对学生参加额外的信息,你可能要考虑中间表参数through。看看这个documentation

+0

我认为,通过参数的中间模型是你所需要的。 – UnLiMiTeD 2013-02-11 18:36:32

+0

只是为了澄清。我正在检索学生与会者,主要仅将其显示为仅供后端使用。只是为了更好地查看列表中的与会者。对不起,我没有在我的文章中指定。 – Modelesq 2013-02-11 18:51:41

+0

@msc应该是一个model.Manager? – Modelesq 2013-02-11 19:14:31