2012-07-16 38 views
0

我想在MultipleChoiceField中加載一個MultipletoField,並將其保存爲具有多對多關係的初始數據字段。加載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 icelist與用戶,但我沒有說在他們的「courses_list」字段過程的用戶列表..

我可以通過訪問用戶的cours_list:

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

如果你有一個想法.. :)

回答

1

確認你在問什麼。您希望能夠看到帶有課程的表格,並選擇哪些用戶在課程中擁有該課程?

您將無法正確使用模型中不存在的ModelForm中的字段。

你可以做的是改變模型,並有指向兩個通道中的ManyToManyField,然後使用以下命令:

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

這樣的工作假設你有一個Courses叫ManyToManyField userProfiles

要讓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/en/1.4/topics/db/examples/many_to_many/ – nlassaux 2012-07-16 21:57:19