Не могу сохранить MultipleChoiceField в Django

У меня проблемы с сохранением MultipleChoiceField на моем тестовом сервере (с Apache). Тем не менее, он работает на моей локальной машине (сервер Django).

По форме у меня есть checkboxes что я могу проверить и снять галочку. Когда я нажимаю кнопку "Сохранить", данные, относящиеся к флажкам, сохраняются в базе данных, и форма перезагружается, а флажки обновляются.

Однако так работает локально, а не на тестовом сервере. На тестовом сервере, когда я нажимаю кнопку "Сохранить", он просто перезагружает форму, ничего не сохраняется, ничего не меняется.

Вот код:

class Participant(models.Model):
    databases = models.ManyToManyField(Advertiser, null=True, blank=True, through='ShareDataToBrands')

    @property
    def share_to_brands_list(self):
        brands=[]
        for brand in ShareDataToBrands.objects.all():
            brands.append((brand.advertiser.id, brand.advertiser.brand_name, brand.share_data))

        return brands

class ShareDataToBrandsForm(forms.ModelForm):
    class Meta:
        model = models.Participant
        fields = ('databases', )

    databases=forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)

    def save(self, *args, **kwargs):
        instance=super(ShareDataToBrandsForm, self).save(commit=False)

        #list of brands to share data with
        share_list=map(int, self.cleaned_data.get("databases"))

        participant=self.instance
        for share_data_instance in models.ShareDataToBrands.objects.filter(participant=participant):
            if share_data_instance.advertiser.id in share_list:
                share_data=True
            else:
                share_data=False
            #update record
            share_data_instance.share_data=share_data
            share_data_instance.save()

        return instance

Что может быть не так?


РЕДАКТИРОВАТЬ:

Когда я проверяю logЯ вижу, что программа никогда не входит в for loop! Тем не менее, у меня есть записи в базе данных, соответствующие фильтру.

1 ответ

Решение

Я нашел решение, перебираяShareDataToBrands случаи, связанные с участником вместо всех ShareDataToBrands экземпляров.

в share_to_brands_list свойство, изменили следующую строку:

for brand in ShareDataToBrands.objects.all():

с

for brand in ShareDataToBrands.objects.filter(participant=self):
Другие вопросы по тегам