Nano Hash - криптовалюты, майнинг, программирование

Метод Django Admin возвращает несколько экземпляров вместо одного

У меня очень простая модель:

class Product(models.Model):
    name = models.CharField("name", max_length = 128)
    
    def __str__(self):
        return self.name

class Store(models.Model):
    store_id = models.PositiveIntegerField(unique = True)
    product = models.ForeignKey(Product, on_delete = models.CASCADE, null = True, blank = True)

который отображается в админке:

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ["name", "get_stores"]

    def get_stores(self, obj):
        s = [s.store_id for s in Store.objects.filter(product = obj)]
        if s:
            print("store -- product:", s, "--", obj)
        return s

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

store/product: [457, 11, 17] -- Cake
store/product: [457, 11, 17] -- Cake
store/product: [457, 11, 17] -- Cake

(точно так же в списке продуктов администратора). Как избежать многократного появления? На данный момент в моей базе 3 магазина и только 1 товар.

введите здесь описание изображения

07.01.2021

  • Здесь вы видите первичные ключи магазинов. .store_id покажет первичные ключи Store, которые относятся к obj. 07.01.2021
  • Все идет нормально. Но почему я вижу их 3 раза, а не один раз? 07.01.2021
  • потому что есть три магазина, в которых есть obj как продукт? 07.01.2021
  • вы печатаете s, который представляет собой массив для всех магазинов. Покажите нам, какую команду вы запустили для этого вывода. 07.01.2021
  • Я думал, что get stores() вызывается ОДИН РАЗ для каждого продукта (obj), а не один раз для каждого продукта в магазине - я хочу получить все магазины для одного продукта. 07.01.2021
  • Я добавил скриншот. В базе сейчас только один товар (торт), а магазинов несколько (и торт есть в 3-х из них). 07.01.2021
  • @GauravJain нет команды, кроме печати. Я понимаю, что есть три магазина с obj как product, но как я могу отобразить это только один раз? 07.01.2021
  • obj — экземпляр. Но тогда вы используете .filter(), который может возвращать несколько объектов. Почему бы вам просто не использовать 'store_id' в list_display? Что вы хотите вернуть? 07.01.2021
  • Я хочу видеть магазины, в которых есть товар, указанный в списке товаров. Если я вас правильно понял, вы имеете в виду list_display = ["name", "store_id"], но store_id нет в модели products? 07.01.2021
  • Я не совсем понимаю ваш вопрос. Вы хотите перечислить продукт или магазины, в которых он есть? 19.02.2021
  • У меня есть торт с одним продуктом, и я хочу отобразить все магазины, в которых есть торт. Но прямо сейчас этот код отображает торт n раз, если количество магазинов, в которых есть торт, равно n. Я хочу получить ОДНУ строку: cake \t 457, 1179383, 1179384, а не три (как сейчас). 19.02.2021
  • Вы проверили, что в вашей базе данных есть только один cake? Это может быть из-за дублирования данных. 20.02.2021
  • да, только один торт существует. На самом деле в настоящее время существует только ОДИН продукт. 21.02.2021

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..