Django Фильтр административной страницы ManyToManyField - PullRequest
0 голосов
/ 17 июня 2020

У меня следующие модели:

class OrderItem(models.Model):
    item = models.ForeignKey(FoodDish, 
                            on_delete=models.CASCADE, 
                            blank=True,
                            null=True)
    quantity = models.IntegerField(default=1)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                            on_delete=models.CASCADE)
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return f"{self.quantity} of {self.item.name}"

    def get_total_item_price(self):
        return self.quantity * self.item.price

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                            on_delete=models.CASCADE)

    items = models.ManyToManyField(OrderItem)
    start_date = models.DateTimeField(auto_now_add=True)
    order_date = models.DateTimeField(blank=True, null=True)
    ordered = models.BooleanField(default=False)
    total_price = models.FloatField(blank=True, default=0.0)

    def __str__(self):
        return f"{self.user.username} ordered on {self.order_date}"

На странице администрирования я хочу видеть элементы, относящиеся к определенному заказу. Однако при входе на страницу для определенного порядка поле, содержащее ManyToManyField, отображает все элементы OrderItems в базе данных (с выделенными записями, относящимися к текущему порядку).

Почему поле данных в администрации страница отображает все эти записи? Когда я добавляю новый OrderItem в базу данных, он также появляется в ManyToManyField, даже если не должно быть ссылки на существующую запись заказа.

Затем, можно ли сделать выбор перед обслуживанием страницы администратора, поэтому я может получить только те экземпляры OrderItem, которые связаны с текущим Order?

Edit 1: В admin.py у меня есть следующий код:

from django.contrib import admin
from .models import Order, OrderItem

class OrderAdmin(admin.ModelAdmin):

    fieldsets = [
        ("Date", {"fields": ["order_date"]}),
        ("Items", {"fields": ["items"]}),
        ("Details", {"fields":["ordered", "total_price"]}),
    ]

# Register your models here.
admin.site.register(Order, OrderAdmin)
admin.site.register(OrderItem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...