在给定模型的Django管理页面中,是否可以创建一个或多个将原始给定模型作为外键字段的模型?

时间:2016-06-20 22:59:48

标签: python django django-admin

例如,让我们说我们有汽车和制造商,其中汽车模型包含制造商的外键(许多汽车到一个制造商)。在制造商管理页面中,当您创建新的制造商时,您可以输入制造商可能具有的任何字段,例如名称或地址。

有没有办法在制造商管理页面上创建属于给定制造商的新车?例如,系统会提示您在“制造商”页面上选择“汽车”,或者如果您所需的汽车不存在,则可以创建一个汽车。如果可以的话,有没有办法以这种方式创建属于这个制造商的任意数量的汽车?

1 个答案:

答案 0 :(得分:0)

只要您的汽车有制造商的外键,您就可以选择Django Admin

在你的模特中:

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)

这应该这样做。