AttributeError: у объекта 'Price' нет атрибута 'update'

-2

Я получил ошибку, AttributeError: объект "Цена" не имеет атрибута "update". Я написал

fourrows_transpose=list(map(list, zip(*fourrows)))
val3 = sheet3.cell_value(rowx=0, colx=9)
user3 = Companyransaction.objects.filter(corporation_id=val3).first()
if user3:
        area = Area.objects.filter(name="America").first()
        pref = Prefecture.objects.create(name="Prefecture", area=area)
        city = City.objects.create(name="City", prefecture=pref)
        price= Price.objects.create(city=city)

        pref.name = fourrows_transpose[0][0]
        pref.save()

        for transpose in fourrows_transpose[2:]:
            if len(transpose) == 5:
                if "×" in transpose or "○" in transpose:

                   city.name = "NY"
                   city.save()
                   price.update(upper1000="○",from500to1000="○",under500="○")

В models.py я написал

class Area(models.Model):
    name = models.CharField(max_length=20, verbose_name='area', null=True)
class User(models.Model):
    user_id = models.CharField(max_length=200,null=True)
    area = models.ForeignKey('Area',null=True, blank=True)

class Prefecture(models.Model):
    name = models.CharField(max_length=20, verbose_name='prefecture')
    area = models.ForeignKey('Area', null=True, blank=True)

class City(models.Model):
    name = models.CharField(max_length=20, verbose_name='city')
    prefecture = models.ForeignKey('Prefecture', null=True, blank=True)
class Price(models.Model):
    upper1000 = models.CharField(max_length=20, verbose_name='u1000', null=True)
    from500to1000 = models.CharField(max_length=20, verbose_name='500~1000', null=True)
    under500 = models.CharField(max_length=20, verbose_name='d500', null=True)
    city = models.ForeignKey('City', null=True, blank=True)

Я хочу поставить "○" в верхний1000 и from500to1000 & under500 столбец ценовой модели, но это невозможно сделать из-за ошибки. Что не так в моем коде? Как я могу это исправить?

  • 0
    Как насчет того, чтобы вы сохранили фактическую цену и рассчитали свое представление по ней?
  • 0
    python жалуется правильно, см. class Price(models.Model) он не имеет поля в качестве цены.
Теги:

2 ответа

2
Лучший ответ

.update - это метод запросов, а не моделей. Это полезно, если вы хотите обновить кучу записей, которые разделяют некоторые критерии запроса.

Обычный способ обновления объекта, который у вас уже есть, - это установить его атрибуты и затем сохранить его.

price.upper1000 = "○"
price.from500to1000 = "○"
price.under500 = "○"
price.save()
1

У экземпляра модели django has no attribute 'update', update - это метод класса менеджера объектов django, если вы хотите обновить один экземпляр, который вы можете попробовать:

Price.objects.filter(pk=price.pk).update(upper1000="○",from500to1000="○",under500="○")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню