2016-06-20 45 views
0

例如,假設我們有汽車和製造商,汽車模型包含製造商的外鍵(許多汽車對一個製造商)。在製造商管理頁面中,當您創建新的製造商時,您可以輸入製造商可能擁有的任何字段,例如名稱或地址。在給定模型的Django管理頁面中,是否可以創建一個或多個將原始給定模型作爲外鍵字段的模型?

有沒有辦法在製造商管理頁面上創建屬於給定製造商的新車?例如,系統會提示您在製造商頁面上選擇汽車,或者有能力創建一個,如果您想要的不存在。如果這是可能的,是否有辦法以這種方式創建屬於該製造商的任意數量的汽車?

+2

您正在尋找['InlineModelAdmin'](https://docs.djangoproject.com/zh/1.9/ref/contrib/admin/#inlinemodeladmin-objects)。 –

+0

文檔似乎沒有提到這一點,但是你知道它們應該放在什麼文件中嗎? Models.py? –

+0

或者inline和admin類應該在admin.py中? –

回答

0

只要你的車有外鍵的製造商,你應該能夠在Django管理選擇

在你的模型

from django.db import models 

class Manufacturer(models.Model): 
    name = models.CharacterField(max_length=200,blank=True,null=True) 
    location = models.CharacterField(max_length=200,blank=True,null=True)   

    class Meta: 
     verbose_name = 'Manufacturer' 
     verbose_name_plural = 'Manufacturers' 

    def __str__(self): 
      return name 



class Car(models.Model): 
    manufacturer= models.ForeignKey(Manufacturer,null=True) 
    model = models.CharacterField(max_length=200,blank=True,null=True) 

    class Meta: 
     verbose_name = 'Car' 
     verbose_name_plural = 'Cars'   

    def __str__(self): 
     return model 

在你admin.py:

from django.contrib import admin 
from models import Manufacturer 
from models import Car 


class ManufacturerAdmin(admin.ModelAdmin): 

    fieldsets = ((None, {'fields': ['name','location']}),) 

    class Meta: 
     verbose_name = 'Manufacturer' 
     verbose_name_plural = 'Manufacturers' 



class CarAdmin(admin.ModelAdmin): 

    fieldsets = ((None, {'fields': ['manufacturer','model']}),) 

    class Meta: 
     verbose_name = 'Car' 
     verbose_name_plural = 'Cars 


admin.site.register(Manufacturer,ManufacturerAdmin) 
admin.site.register(Car,CarAdmin) 

這應該做到這一點。

+0

這是不是隻顯示默認情況下顯示的字段?我正在尋找一種基本上將「汽車」字段添加到製造商管理頁面的方法。 –

相關問題