2012-07-16 2 views
0

저장 한 후 ManyTomany 관계가있는 필드를 초기 데이터로 MultipleChoiceField에로드하려고합니다.ManytoMany 필드에서 MultipleChoiceField 값으로로드

내 클래스

class Course(models.Model): 
    name = models.CharField(max_length=30) 
    description = models.TextField(max_length=30) 
    owner = models.ForeignKey(User) 

class UserProfile(models.Model): 
    user = models.OneToOneField(User, unique=True) 
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='student') 
    courses_list = models.ManyToManyField(Course, blank=True) 

내 양식

class AddSubscibeForm(forms.ModelForm): 
    userprofile_set = forms.ModelMultipleChoiceField(initial = User.objects) 
    class Meta: 
     model = Course 

내보기 사실

def addstudents(request, Course_id): 
    editedcourse = Course.objects.get(id=Course_id) # (The ID is in URL) 
    form = AddSubscibeForm(instance=editedcourse) 
    return render(request, 'addstudents.html', locals()) 

, 나는 multiplecho이 당신이있는 경우

> editedcourse = Course.objects.get(id=Course_id) 
> subscribed = editedcourse.userprofile_set.all() 
> subscribed.user.username 

: 사용자와 icelist은,하지만 난

가 나는하여 사용자의 cours_list에 액세스 할 수 있습니다 .. 자신의 'courses_list'필드의 과정이 사용자의 목록이없는 아이디어 .. ..

답변

1

당신이 무엇을 요구하는지 확인하십시오. 코스가있는 양식을보고 어떤 코스의 코스를 선택했는지 알고 싶습니까?

해당 모델에없는 ModelForm에서 필드를 올바르게 사용할 수 없습니다.

class AddSubscibeForm(forms.ModelForm): 
    class Meta: 
     model = Course 
     fields = ('userProfiles') 

이것은 당신이 userProfiles라는 Courses에 ManyToManyField이 가정 일 것이다 :

은 당신이 할 수있는 모델을 변경하고 두 가지를 가리키는 ManyToManyField을하고 다음 사용합니다.

ManyToManyField를 두 가지 방법으로 작동 시키려면 this ticket을 살펴보십시오.

저는 이것을 시도하지는 않았지만 제대로 작동해야한다고 생각합니다.

class Test1(models.Model): 
    tests2 = models.ManyToManyField('Test2', blank=True) 

class Test2(models.Model): 
    tests1 = models.ManyToManyField(Test1, through=Test1.tests2.through, blank=True) 

나이 :

위의
class User(models.Model): 
    groups = models.ManyToManyField('Group', through='UserGroups') 

class Group(models.Model): 
    users = models.ManyToManyField('User', through='UserGroups') 

class UserGroups(models.Model): 
    user = models.ForeignKey(User) 
    group = models.ForeignKey(Group) 

    class Meta: 
     db_table = 'app_user_groups' 
     auto_created = User 

모두 작동합니다. 그리고 두 경우 모두 데이터베이스에서 어떤 것도 변경할 필요가 없습니다.

+0

그것은 잘 작동합니다, 공식 문서는 우리가 그렇게하지 않을 것이라고 말하지만 괜찮습니다. 다른 아이디어가 있다면 (의사에게 ^^) https://docs.djangoproject.com/ko/1.4/topics/db/examples/many_to_many/ – nlassaux