Django多个外键 - 在详细管理页面中显示相关字段以进行添加/编辑

时间:2015-02-09 05:25:00

标签: python django django-models django-templates

我有一个轮询应用程序,其中一个模型“选择”包含2个链接到“人员”模型的外键字段。

一旦我选择了此人的“姓名”,我想自动填充相关的“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 个答案:

答案 0 :(得分: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_other模型的管理页面下显示Choice,您可以执行以下操作;

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

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