2015-02-09 40 views
1

我有一个轮询应用程序与模型“选择”之一,包括2个外键字段链接到“人”模型。Django多个外键 - 显示相关领域的详细信息管理页面添加/编辑

我想在选择人物的“名字”后自动填充相关的“photo_other”字段(包含图片链接)。 “name”也是与Choice模型链接的外键字段。

models.py

class Choice(models.Model): 
    name = models.ForeignKey(Person) 
    photo_other = models.ForeignKey(Person) 
    rating = models.DateTimeField(blank=True, null=True) 

def __unicode__(self): 
    return smart_unicode(self.name) 

class Person(models.Model): 
    name = models.CharField(max_length=250) 
    photo = models.ImageField(upload_to="photos") 
    pub_date = models.DateTimeField() 

def __unicode__(self): 
    return smart_unicode(self.name) 

回答

1

你为什么要存储在两个不同的表相同的值时,他们是通过一个foreign key连接?这只是没有意义。

class Choice(models.Model): 
    name = models.ForeignKey(Person) 
    rating = models.DateTimeField(blank=True, null=True) 

    @property 
    def photo_other(self): 
     return self.name.photo 

class Person(models.Model): 
    name = models.CharField(max_length=250) 
    photo = models.ImageField(upload_to="photos") 
    pub_date = models.DateTimeField() 

为了使photo_otherChoice模型的管理页面下可见,你可以做以下;

class ChoiceAdmin(admin.ModelAdmin): 
    list_display = ['name', 'rating', 'get_photo'] 

    def get_photo(self, obj): 
     return obj.photo_other 
    get_photo.short_description = 'Photo' 
+0

谢谢。虽然这不起作用。我没有在管理员 – Uma 2015-02-10 05:36:05

+0

中看到相关字段,如上所述我在模型中添加了该属性,并且未在管理员详细信息页面上显示照片字段。 – Uma 2015-02-10 06:56:46

+0

谢谢,它的工作原理部分是因为它只在列表显示中显示此部分,而不在详细信息页面中显示。对此有何建议? – Uma 2015-02-17 07:01:06

相关问题