Changing name of Foreign Key items at admin page in Django

僤鯓⒐⒋嵵緔 提交于 2020-01-07 04:34:12

问题


I have created two Django models, were a field from one model is a Foreign key to another (as per below).

class Units(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    symbol = models.CharField(max_length=5)


class Targets(models.Model):
    name = models.CharField(max_length=100)
    unit = models.ForeignKey(MicroNutrientUnits)
    ...

These models are then registered to the admin site via admin.site.register. When adding an item to table Target unit correctly reflects items from table Units, however are represented in a dropdown with the name Units objects for each entry.

How can I set the name in the admin dropdown to Units.name in the admin config page?


回答1:


I had the same issue when I started playing with the admin screens. I don't know if there is a better way to do this but what I did was modify the models.py file to tell my classes what to return as a default string. In your case what I would do is add the following to your Units class definition.

class Units(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    symbol = models.CharField(max_length=5)

    def __str__(self):
        return self.name

This way, when you use the foreign key link to the table, django will display the name of each unit in the dropdown list instead of just the word 'Units' over and over.



来源:https://stackoverflow.com/questions/46988897/changing-name-of-foreign-key-items-at-admin-page-in-django

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!