Как включить поле внешнего ключа в кортеж «fields», чтобы оно появилось на странице подробного просмотра в Django Admin - PullRequest
0 голосов
/ 29 апреля 2020

Модели: У меня есть такая модель

class TestModel1(models.Model):
    bookingid = models.ForeignKey(paymenttable)            // foreign key
    name = models.CharField(max_length=100, null=False, db_index=True)

    // I want this to be displayed in both the list view and detail view
    @property
    def custom_field(self):
       return self.bookingid.username  

Admin.py

class MyAdmin(ReadOnlyAdminFields,admin.ModelAdmin):

      // this works and i get custom_field in list view
      list_display = ('custom_field', 'name') 
      readonly = ('custom_field', 'name')

      // this dosent work and gives error  
      fields = ('custom_field', 'name')   

Ошибка: неизвестное поле (я) ) custom_field. Проверить поля / наборы полей / исключить атрибуты класса MyAdmin

1 Ответ

0 голосов
/ 30 апреля 2020

У вас маленькая опечатка. readonly должно быть readonly_fields

Небольшой взлом, вы можете добавить пользовательский ярлык со свойством short_description в свой метод custom_field. Вы можете сделать это следующим образом ...

# models.py

class TestModel1(models.Model):
    bookingid = models.ForeignKey(paymenttable)
    name = models.CharField(max_length=100, null=False, db_index=True)

    @property
    def custom_field(self):
       return self.bookingid.username

    custom_field.short_description = "User"

Затем вы можете использовать это в своем списке полей в вашем классе администратора, как это ...

# admin.py

class MyAdmin(ReadOnlyAdminFields,admin.ModelAdmin):
      list_display = ('custom_field', 'name') 
      readonly_fields= ('custom_field', 'name')
      fields = ('custom_field', 'name')   
...