Форум сайта python.su
Всем привет! Не подскажете, как такое реализовать:
models.py:
class Cars (models.Model):
car_numb = models.CharField(max_length=20, unique=True, verbose_name=u'Номер машины')
mirror_ign = models.NullBooleanField(null=True, verbose_name=u'Игнорировать наличия зеркала')
date_upd = models.DateTimeField (auto_now_add=True, verbose_name=u'Дата обновления инфы')
def __unicode__(self):
return "%s" % (self.car_numb)
class Details (models.Model):
car = models.ForeignKey(Cars, unique=True)
dr_name = models.CharField(max_length=20, verbose_name=u'Имя Водителя')
mirror = models.NullBooleanField(null=True, verbose_name = u'Наличие зеркала')
comments = models.CharField(blank=True, max_length=100, verbose_name=u'Комментарии')
date_upd = models.DateTimeField (auto_now_add=True, verbose_name=u'Дата обновления лога')
class DetailsAdmin(admin.ModelAdmin):
list_display = ('car', 'Cars.mirror_ign', 'dr_name', 'mirror', 'comments', 'date_upd',)
list_filter = ('Cars.mirror_ign', 'mirror',)
fieldsets = (('Основное',
{'fields': ('car',
'Cars.mirror_ign',
'dr_name',
'mirror',
'comments',)
}),)
search_fields = ['car__car_numb', 'dr_name',]
admin.site.register(Details , Details Admin)
Офлайн
1. По поводу list_display = ('car', ‘Cars.mirror_ign’, ‘dr_name’, ‘mirror’, ‘comments’, ‘date_upd’,)
дополняете класс Details методом
def get_mirror_ign(self):
return self.car.mirror_ign
и вставляете его в list_display ('car', ‘get_mirror_ign’, ‘dr_name’, ‘mirror’, ‘comments’, ‘date_upd’,)
2. Для fieldsets в доках написано “Set fieldsets to control the layout of admin ”add“ and ”change“ pages”, то есть это для добавления и изменения данных модели, поэтому доступ к модели выше не возможен. Даже по соображению безопасности и здравого смысла.
3. list_filter также использует текущую модель, поэтому пока нельзя (может и ошибаюсь). В будущих версиях можно будет писать собственные фильтры.
Офлайн
sairusСпасибо - заработало :)
1. По поводу list_display = ('car', ‘Cars.mirror_ign’, ‘dr_name’, ‘mirror’, ‘comments’, ‘date_upd’,)
дополняете класс Details методом
def get_mirror_ign(self):
return self.car.mirror_ign
и вставляете его в list_display ('car', ‘get_mirror_ign’, ‘dr_name’, ‘mirror’, ‘comments’, ‘date_upd’,)
sairusЖаль, думал, что можно менять значения и у “родительской” модели.
2. Для fieldsets в доках написано “Set fieldsets to control the layout of admin ”add“ and ”change“ pages”, то есть это для добавления и изменения данных модели, поэтому доступ к модели выше не возможен. Даже по соображению безопасности и здравого смысла.
sairusПонял - не дергаюсь :).
3. list_filter также использует текущую модель, поэтому пока нельзя (может и ошибаюсь). В будущих версиях можно будет писать собственные фильтры.
Офлайн
sairusСейчас копал свои исходники и нашел решение, совершенствуем метод
3. list_filter также использует текущую модель, поэтому пока нельзя (может и ошибаюсь). В будущих версиях можно будет писать собственные фильтры.
Офлайн
sairusСпасибо - прикрутил, действительно, приятнее :)sairusСейчас копал свои исходники и нашел решение, совершенствуем метод
3. list_filter также использует текущую модель, поэтому пока нельзя (может и ошибаюсь). В будущих версиях можно будет писать собственные фильтры.
def get_mirror_ign(self):
return self.car.mirror_ign
get_mirror_ign.short_description = u“Игнор зеркала”
get_mirror_ign.admin_order_field = “car__mirror_ign”
Офлайн