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!に入らないことがわかります。ただし、フィルターに一致するレコードがデータベースにあります。