在django中将数据从表单传递到表单的棘手问题

时间:2014-12-14 03:35:03

标签: django forms django-models django-forms

我是一个django新手,并且在更长的时间里还有一场大斗争......:/

用户可以选择设置为ForeignKey的“主要语言”。用户可以选择“其他语言”作为ManyToMany(复选框)。假设,用户选择英语作为“主要”语言,所以英语必须从“其他语言”中过滤掉......一直在搜索,并且不知道如何去做。如果没有JavaScript,这甚至可能吗?

当然,我可以在第二种形式中设置'queryset',但它会在提交后过滤对象......类似的问题是,当选定的国家/地区必须连接到正确的zipcodes时...... / p>

我非常感谢任何提示。 最好的问候。

class Country(models.Model):

    enter code here
    country = models.CharField(max_length=40)
    active = models.BooleanField(default=True)

    class Meta:
        verbose_name_plural = 'Länder'

    def __str__(self):
        return self.country


class ZipCode(models.Model):
    zipcode = models.CharField(max_length=5)
    city = models.CharField(max_length=255)
    active = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = 'Postleitzahlen'

    def __str__(self):
        return '{0} {1}'.format(self.zipcode, self.city)


class MainLanguage(models.Model):
    language = models.CharField(verbose_name='Hauptsprache', max_length=40)
    active = models.BooleanField(default=True)

    class Meta:
        verbose_name_plural = 'Hauptsprachen'
        ordering = ['language']

    def __str__(self):
        return self.language


class SecondLanguage(models.Model):
    language = models.CharField(verbose_name='weitere Sprachen', max_length=40)
    active = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = 'weitere Sprachen'
        ordering = ['language']

    def __str__(self):
        return self.language


class CustomUserprofile(models.Model):
    user = models.OneToOneField(User)

    name = models.CharField(verbose_name='Vorname', max_length=40,
                            null=True, blank=True)

    country = models.ForeignKey(Country, verbose_name='Land',
                                null=True, blank=True)

    zipcode = models.ForeignKey(ZipCode, blank=True, null=True)

    main_language = models.ForeignKey(
        MainLanguage, verbose_name='Hauptsprache',
        null=True, blank=True)

    second_language = models.ManyToManyField(
        SecondLanguage, verbose_name='weitere Sprachen',
        null=True, blank=True)


class UserProfileForm(forms.ModelForm): 
    second_language = forms.ModelMultipleChoiceField(
        queryset=SecondLanguage.objects.all(),
        required=False,
        widget=forms.CheckboxSelectMultiple)

        class Meta:
            model = CustomUserprofile
            exclude = ('user',)

0 个答案:

没有答案