1

問題は、ビュー内のインスタンスを介して選択および転送された選択肢の値を、checkboxSelectMultiple ウィジェットに入力できないことです。

関連するクラスは次のとおりです。

意見:

if sid and request.method != "POST":
    try:
        obj = Service.objects.get(pk=int(sid), user=request.user.pk)
        form = addNewService(instance=obj)
    except:
        return HttpResponseRedirect("/")

形:

class addNewService(forms.ModelForm):
    pk = forms.HiddenInput()
    authorities = forms.ModelMultipleChoiceField(queryset=authorities.objects.all(), widget=forms.CheckboxSelectMultiple, required=True)
    error_css_class = 'error'
    required_css_class = 'required'
    #organisation_logo = forms.ImageField()
    class Meta:
        model = Service
        #exclude = ("user",)
        fields = (  'service_name',
                    'category',
                    'service_duration',
                    'price',
                    'bursarie',
                    'vat_included',
                    'travelExpensesIncluded',
                    'authorities',
                    'type_of_delivery',
                    'description',
                    'active',
                    )

モデル:

class Service(models.Model):
    user = models.ForeignKey(User)
    service_name = models.CharField(max_length=30)
    description = models.TextField()
    category = models.ForeignKey(Category)
    authorities = models.ManyToManyField(authorities)
    active = models.BooleanField()

    def removeServiceURL(self):
        return "/Services/Remove/%s"%self.pk

    def __unicode__(self):
        return "%s @ %s"%(self.service_name, self.user.username)

それに応じてチェックボックスが表示されますが、インスタンスからフォームを開くと、すべてチェックされていないチェックボックスを除いて、すべてが正しく入力されます。

私は何を間違っていますか?

答えてくれてありがとう。

4

1 に答える 1

0

試す:

def your_view(request, sid=None):
    if sid and request.method == "GET":
        try:
            obj = Service.objects.get(pk=sid, user=request.user)
            form = addNewService(instance=obj)
        except Service.DoesNotExist:
            return HttpResponseRedirect("/")

#rest of view

try/except ですべての例外を飲み込みたくはありません。処理している特定の例外を確認してください。デバッグがずっと簡単になります。また、クエリセットでは、主キーでユーザーを照合しようとしましたが、それをオブジェクト: user と比較しました。pk で一致させたい場合は、次のようにします。user__id=request.user.idただし、ユーザーが匿名の場合、これは失敗します。

于 2012-04-23T13:24:34.140 に答える