Saya tidak sengaja menamai salah satu bidang "ketik" dengan Django. Apakah ada cara untuk mengganti namanya atau apakah saya masih dapat menggunakan filter untuk 'ketik' itu Saya mengerti bahwa 'ketik' adalah fungsi bawaan dan ...

0
Toiv 5 April 2021, 16:56

2 jawaban

Jawaban Terbaik

Kesalahan tidak terkait dengan type bawaan sama sekali. Masalahnya adalah Anda menulis .filter(type='Hyrdogen').

type adalah kunci asing untuk CarType sehingga mengharapkan instance yang sama atau id-nya. Anda harus melakukan sesuatu seperti:

from django.shortcuts import get_object_or_404


class HydrogenView(ListView):
    model = Product
    queryset = Product.objects.filter(type__name='Hyrdogen')
    context_object_name = 'product'
    template_name = 'Hydrogen.html'
    
    # If you add an argument to your url pattern you can try something like below
    # def get_queryset(self):
    #     car_type = get_object_or_404(CarType, pk=self.kwargs['car_type_pk'])
    #     return Product.objects.filter(type=car_type)
0
Abdul Aziz Barkat 5 April 2021, 14:53

Cukup ubah nama bidang:

product_type = models.ForeignKey(CarType, on_delete=models.DO_NOTHING, null=True, blank=True)

Lalu lari

python manage.py makemigrations & kemudian python manage.py migrate

Meskipun jika Anda mereferensikan bidang model dengan benar, saya tidak yakin Anda akan mendapatkan kesalahan.

0
Anthony 5 April 2021, 13:57