问题
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