как объявить набор запросов в model.py - PullRequest
0 голосов
/ 14 июня 2019

Я хочу, чтобы в моем models.py был установлен запрос, чтобы я мог получить к нему доступ через представление администратора, а также шаблоны.Проблема у меня заключается в том, чтобы объявить набор запросов в admin.py, а также view.py по-другому.Мне нужен один набор запросов, к которому я могу получить доступ где угодно

Вот мой код в admin.py

def get_queryset(self, request):
    qs = super(ItemTableAdmin, self).get_queryset(request)
    qs = qs.annotate(
       stock=(F('amount') - F('consumption'))
    )
    return qs

def stock(self, obj):
    return obj.stock

, а вот мой код в views.py

my_models = list(ItemTable.objects.all().annotate(stock=(F('amount') - 
F('consumption'))))

my_models_table = items(my_models)
RequestConfig(request).configure(my_models_table)

, который дает мне тот же результат в админ-панели и шаблоне.пример: 8.00 - 7.00 = 1.00

Теперь вот мой код в model.py, который предназначен для достижения одной и той же цели и получения доступа как в администраторе, так и в шаблоне

from django.db.models import F

class ItemTable(models.Model):
    refno = models.CharField("Reference No", max_length=50, unique=True, null=False)
    slno = models.CharField("Serial No", max_length=50, null=False)
    date = models.DateField("Entry Date")
    mata_name = models.TextField("Name of Materials", blank=True)
    manu_name = models.CharField("Manufacturer Name", max_length=50, blank=True)
    batch_no = models.CharField("Batch No", max_length=50, blank=True)
    product = models.TextField("Used in Product", blank=True)
    agent = models.CharField("Local Agent", max_length=250, blank=True)
    mfgdate = models.DateField("MFG Date", null=True, blank=True)
    expdate = models.DateField("EXP Date", null=True, blank=True)
    amount = models.DecimalField(max_digits=12, decimal_places=4, blank=True, null=True)
    consumption = models.DecimalField(max_digits=12, decimal_places=4, blank=True, null=True)
    coa = models.FileField("Certificate of Analysis", upload_to='pdf/coa', blank=True, null=True)
    msds = models.FileField(upload_to='pdf/msds', blank=True, null=True)
    moa = models.FileField("Method of Analysis", upload_to='pdf/moa', blank=True, null=True)


    def query(self):
        return ItemTable.objects.all().annotate(stock=F('amount') - 
        F('consumption'))

Я ожидаю выводакак 8.00 - 7.00 = 1.00, но я получаю этот вывод:

<QuerySet [<ItemTable: 12>, <ItemTable: 1>, <ItemTable: 2>, <ItemTable: 3>, <ItemTable: 4>, <ItemTable: 5>]>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...