2016-09-06 89 views
2

我有一个与django-admin面板有关的小问题。 我有2种型号:如何在django-admin中显示外键的选择?

from django.db import models 

class Subject(models.Model): 
    subject = models.CharField(max_length=30, choices=[('P', 'Personal'), ('W', 'Work')]) 

    def __str__(self): 
     return self.subject 

class BlogPost(models.Model): 
    id = models.AutoField(unique=True, primary_key=True) 
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE) 
    text = models.TextField(null=False) 
    pic = models.ImageField(upload_to='static/img/', default='static/img/no-image.png') 
    date = models.DateTimeField() 

    def __str__(self): 
     return self.subject 

但在管理面板,每当我试图创建的博客文章,下拉菜单中不显示任何的主题的选择。我需要编辑管理渲染功能吗?

回答

2

顺便说一下,您必须首先添加主题,以便它们可以出现在您的外键选项中。你可以得到相同的结果:

class BlogPost(models.Model): 
    id = models.AutoField(unique=True, primary_key=True) 
    subject = models.CharField(max_length=30, choices=[('P', 'Personal'), ('W', 'Work')]) 

    def __str__(self): 
     return self.subject 

你想要什么ForeignKey的?

+1

嗯......你说得对。你的选择非常简单。谢谢! – Disciples

+0

但是......这个想法是,你可以添加管理面板的主题,并设置帖子主题。现在为了创造新的主题,我必须伤心地硬编码。 – Disciples

+1

那么你必须坚持你的初始模型,但删除主题选择参数。添加主题后,BlogPost的外键将自动显示为创建的主题的下拉列表 –