[英]In Django-admin, how to show foreignkey's foreignkey in the same page?
[英]How to show foreignkey attributes django admin fields?
這個問題與其他問題相似,但實際上是不同的,所以:我有 3 個模型,例如(我刪除了一些不必要的東西以縮短代碼):
class Category(models.Model):
category_title = models.CharField(max_length=200)
category_content = models.TextField()
category_slug = models.CharField(max_length=200)
def __str__(self):
return self.category_title
class Classes(models.Model):
classes_title = models.CharField(max_length=200)
classes_content = models.TextField()
classes_category = models.ForeignKey(Category, on_delete=models.SET_DEFAULT)
def __str__(self):
return self.classes_title
class Subjects(models.Model):
subject_title = models.CharField(max_length=200)
subject_content = models.TextField()
subject_class = models.ForeignKey(Classes, on_delete=models.SET_DEFAULT)
def __str__(self):
return self.subject_title
所以讓我舉個例子。 我可以有 2 個類別,在這些類別中我可以有“同名”類。 讓我們想想數學是兩個類別的 class。 當我想在數學中添加一個新主題時,我在管理頁面中看到了 2 個同名的數學。 所以我想知道哪個屬於管理頁面中的哪個類別。 所以我可以將我的主題添加到右邊的 class。
class SubjectAdmin(admin.ModelAdmin):
fields = ('subject_title', 'subject_content', 'subject_class',)
所以在這張圖片中(Subjects = Konular)我添加了一個新的主題。 我將擁有 Class 的外鍵。 但是,對於來自不同類別的類,我有相同的名稱。 那么在這個下拉列表中,我怎么知道哪個 class 屬於哪個類別?
嘗試這個...
class KonularAdmin(admin.ModelAdmin):
fields = ('subject_title', 'subject_content', 'subject_class', 'get_classes_category_title')
def get_classes_category_title(self, obj):
subject_object = Subjects.objects.get(id=obj.subject_class)
return str(subject_object.classes_category.category_title)
您可以使用__str__()
方法更改 object 的字符串表示:
class Subjects(models.Model):
subject_title = models.CharField(max_length=200)
subject_content = models.TextField()
subject_class = models.ForeignKey(Classes, on_delete=models.SET_DEFAULT)
def __str__(self):
return f"{self.subject_title} - {self.subject_content} - {self.subject_class}"
# shorter version:
# return f"{self.subject_title[:10]} - {self.subject_content[:10]} - {self.subject_class[:10]}"
檢查它:
>>> print(Subjects.objects.first())
如果我理解正確,這應該可以。
class Classes(models.Model):
classes_title = models.CharField(max_length=200)
classes_content = models.TextField()
classes_category = models.ForeignKey(Category, on_delete=models.SET_DEFAULT)
def __str__(self):
return self.title
class Subjects(models.Model):
subject_title = models.CharField(max_length=200)
subject_content = models.TextField()
subject_class = models.ForeignKey(Classes, on_delete=models.SET_DEFAULT)
def __str__(self):
return f"{self.subject_title} - {str(self.subject_class)}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.