Django Итерация по полям конкретного экземпляра модели

Я новичок в django. Моя цель - создать словарь с ключами, взятыми из таблицы, и значениями, взятыми из конкретного экземпляра модели, который среди прочих содержит поля, которые мы можем встретить в таблице. Есть ли способ итерации по полям экземпляра модели для этого?

Моя идея, как вы видите ниже, не работает, потому что конкретный экземпляр, представленный как i, не распознает переменную j как свое поле.

Есть идеи?

my_fields=['car','model','age']
my_dict={} #I would like it to look like my_dict={'car':'Toyota','model':'Corolla','age':2}

class Cars(models.Model):
     car=models.CharField(max_length=40)
     model=models.CharField(max_length=40)
     age=models.IntegerField()
     country=models.CharField(max_length=40)
     amounts_of_doors=models.IntegerField()

     
#particular instance
Object { model: "cars.Car", pk: 1, fields: {'car':'Toyota','model':'Corolla','age':2}}

#code I have tried

for i in Cars.objects.all():
    if i.car=='Toyota:
       for j in my_fields:
            my_dict[j]=i.j <==it doesn't work 

Полагаю, вы можете преобразовать экземпляр модели, используя model_to_dict. Затем вы можете получить доступ к его ключам и значениям, как

for i in Cars.objects.all():
    if i.car=='Toyota':
       for j in my_fields:
            my_car_dict = model_to_dict(i)
            my_dict[j] = my_car_dict[j]

Или вы можете использовать gettattr непосредственно на экземпляре вашей модели

for i in Cars.objects.all():
    if i.car=='Toyota':
       for j in my_fields:
            my_dict[j] = getattr(i, j)

Вам не нужно делать ничего из этого, если у вас есть values, которые получают поля модели в качестве ключа и значения в качестве значений экземпляров.

toyota = Cars.objects.filter(id=1).values()
# do something with toyota

Все же, если вы хотите получить поля модели, просто сделайте это с помощью этого Car._meta.get_fields()

Вернуться на верх