如何加上「+&引用;使用一对多关系时Django Admin中的按钮,如果该模型具有ForeignKey?

如何加上「+&引用;使用一对多关系时Django Admin中的按钮,如果该模型具有ForeignKey?,django,django-models,django-admin,Django,Django Models,Django Admin,这个问题是问题的延伸 modles.py from django.db import models # Create your models here. class Dude(models.Model): name = models.CharField(blank=False, null=False, max_length=100, unique=True) def phones(self): # use reverse relation to get a

这个问题是问题的延伸

modles.py

from django.db import models

# Create your models here.

class Dude(models.Model):
    name = models.CharField(blank=False, null=False, max_length=100, unique=True)

    def phones(self):
        # use reverse relation to get a list ofall recorded numbers
        phone_numbers = self.phonenumber_set.values_list('number', flat=True)  
        phone_count   = self.phonenumber_set.count()
        return "This user have %s numbers recorded: %s" % (phone_count, ', '.join(phone_numbers))

    def __unicode__(self):
            return u"%s" % self.name

class PhoneType(models.Model):
    name   = models.CharField(blank=False, null=False, max_length=100, unique=True)

class PhoneNumber(models.Model):
    dude   = models.ForeignKey(Dude)
    number = models.CharField(blank=False, null=False, max_length=100, unique=True)
    type   = models.ForeignKey(PhoneType)
from django.contrib import admin

# Register your models here.

from TestingDjango.apps.one_to_many.models \
import Dude, PhoneNumber

class PhoneNumberInline(admin.TabularInline):
    model = PhoneNumber
    extra = 1

class DudeAdmin(admin.ModelAdmin):
    pass
    list_display  = ('name', 'phones')
    inlines = [ PhoneNumberInline, ]

class PhoneNumberAdmin(admin.ModelAdmin):
    pass
    list_display  = ('dude', 'number')

admin.site.register(Dude, DudeAdmin)
admin.py

from django.db import models

# Create your models here.

class Dude(models.Model):
    name = models.CharField(blank=False, null=False, max_length=100, unique=True)

    def phones(self):
        # use reverse relation to get a list ofall recorded numbers
        phone_numbers = self.phonenumber_set.values_list('number', flat=True)  
        phone_count   = self.phonenumber_set.count()
        return "This user have %s numbers recorded: %s" % (phone_count, ', '.join(phone_numbers))

    def __unicode__(self):
            return u"%s" % self.name

class PhoneType(models.Model):
    name   = models.CharField(blank=False, null=False, max_length=100, unique=True)

class PhoneNumber(models.Model):
    dude   = models.ForeignKey(Dude)
    number = models.CharField(blank=False, null=False, max_length=100, unique=True)
    type   = models.ForeignKey(PhoneType)
from django.contrib import admin

# Register your models here.

from TestingDjango.apps.one_to_many.models \
import Dude, PhoneNumber

class PhoneNumberInline(admin.TabularInline):
    model = PhoneNumber
    extra = 1

class DudeAdmin(admin.ModelAdmin):
    pass
    list_display  = ('name', 'phones')
    inlines = [ PhoneNumberInline, ]

class PhoneNumberAdmin(admin.ModelAdmin):
    pass
    list_display  = ('dude', 'number')

admin.site.register(Dude, DudeAdmin)

当我添加新Dude时,我只能选择现有的电话类型。没有像其他外键字段那样的“+”按钮。我怀疑这是一对多关系的结果。那么,如何为PhoneType添加“+”按钮呢?

您需要注册PhoneNumberAdmin以使Django的管理员可以访问它,然后它将为您提供“+”选项以添加更多内容

插入

admin.site.register(PhoneNumber, PhoneNumberAdmin)

在文件底部

您需要注册PhoneNumberAdmin以使Django的管理员可以访问它,然后它将为您提供“+”选项以添加更多内容

插入

admin.site.register(PhoneNumber, PhoneNumberAdmin)
在文件的底部