2015-06-12 51 views
0

我想問一下。我可以在django管理員中創建多個視圖項目嗎? 我有一個多對多的關係,所以我創建了一個關聯實體。但我不明白如何查看這在Django管理。有人能幫我嗎。django中的多對多Admin

models.py

from django.db import models 
from django.contrib import admin 

class Client(models.Model): 
    f_name = models.CharField(verbose_name = "Фамилия", max_length = 100) 
    l_name = models.CharField(verbose_name = "Имя", max_length = 100) 
    m_name = models.CharField(verbose_name = "Отчество", max_length = 100) 
    phone = models.CharField(verbose_name = "Телефон", max_length = 100) 
    city = models.CharField(verbose_name = "Город", max_length = 100) 
    address = models.CharField(verbose_name = "Адрес", max_length = 200) 

    def __str__(self): 
     return self.f_name + " " + self.l_name + " (" + self.phone + ")" 

class Item(models.Model): 
    name = models.CharField(verbose_name = "Название", max_length = 100) 
    TYPE_ITEMS = (
     ("shirt", "Футболка"), 
     ("shoes", "Обувь"), 
     ("bags", "Рюкзаки и сумки"), 
     ("heads", "Головные уборы"), 
     ("others", "Другое"), 
     ) 
    type_item = models.CharField(verbose_name = "Тип продукта", 
           choices = TYPE_ITEMS, max_length = 6, 
           default = "shirt") 
    other = models.TextField("другая информация") 
    color = models.CharField("Цвет(а)", max_length = 100) 
    cost = models.IntegerField("Стоимость за штуку", default = 0) 
    is_available_now = models.BooleanField("Есть ли в наличии?", 
              default = False) 
    available_count = models.IntegerField("Количество в наличии", default = 0) 
    photo = models.ImageField("Фото", upload_to = "media") 

    def __str__(self): 
     return self.name + " " + self.color + " (" + str(self.cost) + " грн)" 

class Order(models.Model): 
    id_client = models.ForeignKey(Client, null = True, blank = True, 
            verbose_name = "Клиент") 
    date_order = models.DateField(verbose_name = "Дата заказа") 
    date_taken = models.DateField(verbose_name = "Дата получения") 
    is_paid = models.BooleanField(verbose_name = "Оплачено?", default = False) 
    is_taken = models.BooleanField(verbose_name = "Получил покупатель?", 
            default = False) 

class Order_item(models.Model): 
    id_order = models.ForeignKey(Order) 
    id_item = models.ForeignKey(Item) 

admin.py

admin.site.register(Item) 
admin.site.register(Order) 
admin.site.register(Client) 
admin.site.register(Order_item) 

如果用戶創建訂單,如何查看自己買什麼?

如果管理員中的用戶選擇了一個訂單,我想查看多個項目。我可以用django管理員創建這個嗎?

enter image description here

回答

0

而不是使用Order_item類,你應該添加一個items = models.ManyToManyField(Item)場到當前的Order類。

+0

我只是想知道我可以做的選擇從許多表中,並在django管理員查看它? –

+0

是的,如果您將項目添加爲多個項目字段,則在管理面板上您將看到項目對象列表。 –

1

我已經完成了這項工作。所以這是我的代碼:

admin.py

from django.contrib import admin 

from myapp.models import Client, Item, Order, Ordering 

class ClientAdmin(admin.ModelAdmin): 
    list_display = ("f_name", "l_name", "m_name", "phone", "city", "address") 
    list_filter = ["f_name", "l_name", "city"] 

class ItemAdmin(admin.ModelAdmin): 
    list_display = ("name", "type_item", "color", "cost", "is_available_now", 
        "available_count") 
    list_filter = ["name", "type_item", "color", "cost", "available_count"] 

class OrderingAdmin(admin.ModelAdmin): 
    list_display = ("id_order", "id_item", "count_items") 
    list_filter = ["id_order", "id_item", "count_items"] 

class OrderingInline(admin.TabularInline): 
    model = Ordering 
    fk_name = "id_order" 
    max_num = 1 

class OrderAdmin(admin.ModelAdmin): 
    list_display = ("id", "id_client", "date_order", "date_taken", "is_paid", 
        "is_taken") 
    list_filter = ["date_order", "date_taken", "is_paid", "is_taken"] 

    inlines = [ 
     OrderingInline, 
     ] 

admin.site.register(Item, ItemAdmin) 
admin.site.register(Order, OrderAdmin) 
admin.site.register(Client, ClientAdmin) 
admin.site.register(Ordering, OrderingAdmin) 

而我拿:

enter image description here

感謝所有)))