Создание администратора Django отобразить Первичный ключ, а не Тип объекта каждого объекта

Я полностью согласен с ответом Джона Галлоуэя. Я также попытался использовать vss2svn , но обнаружил, что с импортированным репозиторием было много проблем, и в итоге решил, что оно не стоит усилий, необходимых для его очистки. Мы просто импортировали копию кода в Subversion и вернулись в VSS в том редком случае, когда нужно было обратиться к более старой версии кода.

В моей предыдущей компании мы также использовали тот же подход для перехода с ClearCase на Subversion, и я не могу вспомнить ни одного случая, когда нам когда-либо приходилось возвращаться в ClearCase, чтобы взглянуть на историю.

Самая большая проблема заключалась в том, чтобы заставить всех переключиться на новый репозиторий одновременно, но как один разработчик, у вас не должно быть никаких проблем!

11
задан mikemaccana 20 October 2009 в 12:58
поделиться

3 ответа

Добавить метод __ unicode __ () в Хост . Чтобы показать первичный ключ ваших хост-объектов, вам нужно что-то вроде:

class Host(models.Model):
    host = models.CharField(max_length=100, primary_key=True)

    def __unicode__(self):
        return self.pk

    ...

Вы можете подумать об отображении содержимого поля host :

class Host(models.Model):
    host = models.CharField(max_length=100, primary_key=True)

    def __unicode__(self):
        return self.host

    ...

You ' Вам нужно будет сделать что-то подобное для каждой вашей модели.

Для совместимости с Python 3 вам нужно сделать что-то вроде этого (см. документацию ):

from __future__ import unicode_literals
from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class Host(models.Model):
    host = models.CharField(max_length=100, primary_key=True)

    def __str__(self):
        return self.host

    ...
33
ответ дан 3 December 2019 в 01:07
поделиться

contrib.admin был переработан в 1.0, и старые классы Admin внутри моделей больше не работают. Вам нужен подкласс ModelAdmin в модуле your_application.admin , например

from your_application.models import Host
from django.contrib import admin

class HostAdmin(admin.ModelAdmin):
    list_display = ('host',)

admin.site.register(Host, HostAdmin)

Или используйте __ unicode __ в самой модели, например

class Host(models.Model):
    host = models.CharField(max_length=100,primary_key=True)

    def __unicode__(self):
        return self.host
10
ответ дан 3 December 2019 в 01:07
поделиться

Также стоит упомянуть, что если вы используете автоинкрементирующий первичный ключ для ваших моделей, вам нужно будет принудительно ввести его в строку, например:

def __unicode__(self):
    return str(self.pk)
3
ответ дан 3 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: