【发布时间】:2016-08-20 12:37:55
【问题描述】:
我不明白为什么我一直收到这个错误:
“选择一个有效的选项。该选项不是可用选项之一。” 错误消息属于“帐户”字段
这是我的模型:
class Account(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
balance = models.FloatField()
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Entry(models.Model):
account = models.ForeignKey("Account", on_delete=models.CASCADE)
amount = models.FloatField()
expense = models.BooleanField(default=True)
date = models.DateTimeField()
usage = models.CharField(max_length=200, blank=True)
payment_method = models.ForeignKey("PaymentMethod", on_delete=models.CASCADE)
category = models.ForeignKey("Category", on_delete=models.CASCADE)
def __str__(self):
return "{} - {}".format(self.date, self.account)
我的看法:
class AddExpenseView(View):
template_name = "finance/create_booking.html"
form_class = CreateBookingForm
@method_decorator(login_required)
def get(self, request):
context = {
"title": "StatYourLife - Neue Ausgabe",
"create_booking_form": self.form_class(user=request.user)
}
return render(request, self.template_name, context)
@method_decorator(login_required)
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user_profile = UserProfile.objects.get(user_id=request.user)
booking = form.save(commit=False)
account = booking.account
account.balance -= booking.amount
booking.expense = True
booking.date = timezone.now()
user_profile.entrys += 1
user_profile.save()
account.save()
booking.save()
return HttpResponseRedirect(reverse("finance:index"))
else:
context = {
"title": "test",
"create_booking_form": form
}
return render(request, self.template_name, context)
还有我的表格:
class CreateBookingForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(CreateBookingForm, self).__init__(*args, **kwargs)
self.fields["account"].queryset = Account.objects.filter(owner=self.user)
class Meta:
model = Entry
exclude = ["expense", "date"]
在我尝试提交此表单并选择帐户类型之前,我工作正常。
【问题讨论】:
-
AddExpenseView 上的
post方法在哪里? -
对不起,我添加了post方法