@Kwad

Как вывести данные с QuerySet в переменные?

Имею модель заказа,в нем данные заказа.
Их нужно извлечь во время действия админа.
К примеру извлечь address_city ,позже вывести в консоль( print(address_city) )
admin.py

def send_bot(modeladmin, request, queryset):
    print(queryset) # выводит имя пользователя так как def __str__ на имя заточен
    infor = Order.objects.filter(user=queryset) # выдает ошибку
    print(infor)
    print(address_city) # нужно вывести город заказа
send_bot.short_description = "Send order to manager"

class OrderAdmin(admin.ModelAdmin):
    list_display = ['user',
                    'ordered',
                    'ordered_date',
                    'being_delivered',
                    'received',
                    'novaposhta',
                    'coupon',
                    'address_city',
                    'address_point',
                    'address_name',
                    'address_surname',
                    'address_thirdname',
                    'address_phone',
                    'address_email',
                    'address_comment'
                    ]
    list_display_links = [
        'user',
        'novaposhta',
        'coupon'
    ]
    list_filter = ['ordered',
                   'being_delivered',
                   'received'
    ]
    actions = [send_bot]

admin.site.register(Category)
admin.site.register(Article)
admin.site.register(Item)
admin.site.register(OrderItem)
admin.site.register(Order, OrderAdmin)



models.py

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    novaposhta = models.CharField('ТНН',max_length=20, blank=True, null=True)
    items = models.ManyToManyField(OrderItem)

    start_date = models.DateTimeField(auto_now_add=True)
    ordered_date = models.DateTimeField('Дата заказа')

    address_city = models.CharField('Город',max_length=40, blank=True, null=True)
    address_point = models.CharField('Отделение',max_length=40, blank=True, null=True)
    address_name = models.CharField('Имя',max_length=40, blank=True, null=True)
    address_surname = models.CharField('Фамилия',max_length=40, blank=True, null=True)
    address_thirdname = models.CharField('Отчество',max_length=40, blank=True, null=True)
    address_phone = models.CharField('Номер телефона',max_length=40, blank=True, null=True)
    address_email = models.CharField('E-Mail',max_length=40, blank=True, null=True)
    address_comment = models.CharField('Коментарий к заказу',max_length=250, blank=True, null=True)

    coupon = models.ForeignKey(
        'Coupon', on_delete=models.SET_NULL, blank=True, null=True)


    being_delivered = models.BooleanField('Выполнен',default=False)
    received = models.BooleanField('Подтвержден',default=False)
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username

  • Вопрос задан
  • 1344 просмотра
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
infor = Order.objects.filter(user=queryset) # выдает ошибку


потому что это queryset

Возвращайте конкретные объекты из запросов. К примеру - я взял последние. Что в вашем случае надо - нужно исходить из логики вашего приложения.

# вернули последнего пользователя из запроса, вернули последний Order 
infor = Order.objects.filter(user=queryset.last()).last()
print(infor.address_city) #вывели город заказа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы