我不明白爲什麼我一直收到這個錯誤:「選擇一個有效的選擇。」在Django中使用模型的錯誤
「選擇一個有效的選擇,該選擇不是可用的選擇之一。 錯誤消息屬於域 「帳戶」
這裏是我的模型:
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'方法在哪裏? –
對不起,我加了帖子的方法 – knusperwurst