亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在 /car/offer/4/ 處收到 ValueError Cannot allocate

我在 /car/offer/4/ 處收到 ValueError Cannot allocate

陪伴而非守候 2024-01-16 10:31:50
我正在 django 為 uber 司機開發一個汽車租賃網站,從詳細視圖我需要司機能夠選擇他們的租賃期限,其他信息將自動填寫到我的views.py的表格中,我能夠為了通過request.user獲取司機,我還需要租賃汽車的PK。在這里搜索時,我嘗試了這里人們的各種建議,但我不斷收到一個又一個錯誤......使用 self.kwargs['pk']結果ValueError at /car/offer/4/ Cannot assign "4": "CarRent.car" must be a "Car" instance.然后我嘗試使用 form.car = Car.objects.get(pk= self.kwargs.get('pk'))它的結果AttributeError at /car/offer/4/ 'CarRent' object has no attribute 'is_valid'有人可以告訴我如何獲取 CarRent 模型中保存的汽車實例嗎?任何幫助將不勝感激。謝謝下面是我的代碼(減少到相關位)models.pyclass Car(models.Model):    car_owner = models.ForeignKey(User, related_name='car_owner', on_delete=models.CASCADE)class CarRent(models.Model):    car = models.ForeignKey(Car, related_name='rented_car', on_delete=models.CASCADE)    driver = models.ForeignKey(User, related_name='driver_renting', on_delete=models.CASCADE)    rented_weeks = models.BigIntegerField(default=1, choices=WEEK_CHOICES)forms.pyclass RentForm(forms.ModelForm):    class Meta:        model = CarRent        fields = ['rented_weeks']我只顯示租用的周數,因為這是我需要用戶提供的唯一信息。views.pyclass CarView(FormMixin, DetailView):    model = Car    form_class = RentForm    def get_success_url(self):        return reverse('car-details', kwargs={'pk': self.object.pk})    def post(self, request, *args, **kwargs):        if not request.user.is_authenticated:            return HttpResponseForbidden()        self.object = self.get_object()        form = self.get_form()        form = form.save(commit=False)              form.car = self.kwargs['pk']        form.driver = request.user        if form.is_valid():            return self.form_valid(form)        else:            return self.form_invalid(form)    def form_valid(self, form):        form.save()        return super().form_valid(form)
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

form.car需要一個Car對象,而不是帶有主鍵的字符串,但您可以簡單地使用:


from django.contrib.auth.mixins import LoginRequiredMixin


class CarView(LoginRequiredMixin, FormMixin, DetailView):

? ? # …


? ? def post(self, request, *args, **kwargs):

? ? ? ? ? ? form = self.get_form()

? ? ? ? ? ? self.object = self.get_object()

? ? ? ? ? ? if form.is_valid():

? ? ? ? ? ? ? ? return self.form_valid(form)

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? return self.form_invalid(form)

? ??

? ? def form_valid(self, form):

? ? ? ? form.instance.car_id = self.kwargs['pk']

? ? ? ? form.instance.driver = self.request.user

? ? ? ? form.save()

? ? ? ? return super().form_valid(form)

注意:您可以使用LoginRequiredMixinmixin [Django-doc]將視圖限制為基于類的視圖,以供經過身份驗證的用戶使用?。


注意:通常使用settings.AUTH_USER_MODEL[Django-doc]來引用用戶模型比直接使用User模型 [Django-doc]更好。有關詳細信息,您可以參閱文檔的參考User模型部分。


查看完整回答
反對 回復 2024-01-16
  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號