如何添加“+”在Django Admin中使用一对多关系的按钮,如果该模型有ForeignKey? [英] How to add "+" button in Django Admin when using one-to-many relationship if that model have ForeignKey?

查看:1122
本文介绍了如何添加“+”在Django Admin中使用一对多关系的按钮,如果该模型有ForeignKey?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此问题是更好的Django UI扩展到一对多关系

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)

strong> admin.py

admin.py

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。没有其他ForeignKey字段的+按钮。我怀疑这是一对多关系的二重奏。那么如何为PhoneType添加+按钮?

When I add new Dude I can only select existing PhoneType. There is no "+" button like for other ForeignKey fields. I suspect that that is duo to this one-to-many relationship. So how to add "+" button for PhoneType ?

推荐答案

您需要注册PhoneNumberAdmin才能使Django的管理员可以访问,那么它会给你'+'选项添加更多。

You will need to register PhoneNumberAdmin to make it accessible to Django's admin, then it will give you the '+' option to add more.

插入

admin.site.register(PhoneNumber, PhoneNumberAdmin)

在文件的底部

这篇关于如何添加“+”在Django Admin中使用一对多关系的按钮,如果该模型有ForeignKey?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆