Django 多外键 - 在 add/edit 的详细信息管理页面中显示相关字段
Django multiple Foreign Key - Display related field in details admin page for add/edit
我有一个轮询应用程序,其中一个模型 "Choice" 包含 2 个外键字段 linked 到 "Person" 模型。
我想在我选择此人的 "name" 后自动填充相关的 "photo_other" 字段(带有图像 link)。 "name" 也是一个外键字段 link 使用 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)
当两个不同的表通过 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'
我有一个轮询应用程序,其中一个模型 "Choice" 包含 2 个外键字段 linked 到 "Person" 模型。
我想在我选择此人的 "name" 后自动填充相关的 "photo_other" 字段(带有图像 link)。 "name" 也是一个外键字段 link 使用 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)
当两个不同的表通过 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'