Вопросы с тегами [modeladmin]

1

голосов
0

ответ
37

Просмотры

ModelAdmin - Вы можете добавить вложенные вкладки в управляемом виде модели?

SilverStripe 3 У меня есть установка ModelAdmin с четырьмя управляемых моделей. При загрузке ModelAdmin, нажав в меню слева вы видите каждую модель управляемого отделенный на самом верхнем ряду вкладок. Для одного из этих управляемых моделей, я хочу иметь Подпозицию строка отображает отдельное gridfield для подмножества данных, управляемых моделей. Обратите внимание, я не пытаюсь добавить вложенные вкладки в самой модели. Я знаю, что может быть достигнуто с помощью getCMSFields и addFieldsToTab. Есть ли эквивалент делать это на управляемом зрения модели, прежде чем пользователь нажмет в реальный экземпляр модели? EDIT: Альтернативное решение, я просто подумал - возможность добавить новую вкладку верхнего уровня на страницу по стороне «Материалы», «Зависимые страницы» и «Настройки».
Aaryn
1

голосов
1

ответ
495

Просмотры

Django администратора Страница: Текст справки для модельных методов?

У меня есть метод модели в Django, что я отображающий на страницу администратора так же, как я бы модель поля. С полем, я могу просто добавить help_text аргумента к нему, чтобы дать описание того, что поле является и то, что пользователь должен положить в него. Однако, с помощью метода модели, help_text не работает. Добавление атрибута SHORT_DESCRIPTION изменяет способ отображения имени метода, который является своего рода хорошо, но я ищу способ добавить несколько предложений описания ниже значения метода, который отображается. Есть ли способ сделать это изначально, или я должен прибегнуть к переопределение шаблонов администратора или что-то? (Который я не думаю, что стоит что-то в этом незначительное).
kloddant
1

голосов
2

ответ
3.7k

Просмотры

DJANGO ModelAdmin SQLLite ошибка: DISTINCT на полях не поддерживается данной серверной базы данных

Моя модель класс Contrat (models.Model): Процедура = models.ForeignKey (Процедура) Contrat_text = models.CharField (max_length = 150) Защита __str __ (Я): возвращение self.Contrat_text Класс документ (models.Model): Contrat = Contrat .objects.order_by ( 'Contrat_text'). отчетливый ( 'Contrat_text') isContrat = models.BooleanField (( 'Contrat'), по умолчанию = True) isCdC = models.BooleanField (( 'Cahier де плата'), по умолчанию = False) ISCR = models.BooleanField (( 'Cahier де Recette'), по умолчанию = False) Защита __str __ (Я): возвращение self.Contrat и мой админ модель: класс DocumentAdmin (admin.ModelAdmin): поля = ( 'Contrat', ' isContrat», 'isCdC', 'ISCR') list_display = ( 'ID', 'isContrat', 'isCdC', 'ISCR') Упорядочение = ( «ID»,) admin.site.register (Документ, DocumentAdmin), но то, что я получаю: DISTINCT на полях не поддерживается данной серверной базы данных Кто-нибудь знает, как создать модель админа без ошибок?
DJR
1

голосов
1

ответ
34

Просмотры

экран ModelAdmin для DataObject не открывается

В SilverStripe 3.1.13 Я пытаюсь установить простые отношения один-ко-многим между DataObjects администрируемых ModelAdmin. Существует класс объекта, который может иметь один от FacilityCategory. Я могу войти в закладке Категории Facility, но как только я вхожу вкладку Facility, «главный» экран гаснет, и администратор загрязняется с тех пор - нет вкладки больше будет показывать содержимое. Я стер все таблицы, начиная с фондом и FacilityCategories и сделал Dev / сборки несколько раз с румянцем. Будет ли кто-нибудь пролить некоторый свет на меня, как на почему он не работает? Что плохое о моих классах / отношениях? Facility.php класс Facility расширяет DataObject {частный статический $ дб = массив ( 'Title' => 'VARCHAR'); частный статический $ has_one = массив ( 'Категория' => 'FacilityCategory' ); общественные статические $ summary_fields = массив ( 'Title', 'Category'); Функция getCMSFields общественных () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), DropdownField :: создать ( 'FacilityCategoryID', 'Категория') -> setSource (FacilityCategory :: получить () -> Карта ( 'ID', 'Title')) -> setEmptyString ( '- выберите категорию -')); вернуть $ поля; }} Класс FacilityAdmin расширяет ModelAdmin {частный статический $ menu_title = 'Услуги'; частных статических $ url_segment = 'объекты'; частные статические $ managed_models = массив ( 'Facility'); } FacilityCategory. класс PHP FacilityCategory расширяет DataObject {частный статический $ дб = массив ( 'Title' => 'VARCHAR'); частный статический $ has_many = массив ( 'Услуги' => 'Объект'); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title')); вернуть $ поля; }} Класс FacilityCategoryAdmin расширяет ModelAdmin {частный статический $ menu_title = 'Facility категории'; частный статический $ url_segment = «объектной категория»; частные статические $ managed_models = массив ( 'FacilityCategory'); } общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title')); вернуть $ поля; }} Класс FacilityCategoryAdmin расширяет ModelAdmin {частный статический $ menu_title = 'Facility категории'; частный статический $ url_segment = «объектной категория»; частные статические $ managed_models = массив ( 'FacilityCategory'); } общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title')); вернуть $ поля; }} Класс FacilityCategoryAdmin расширяет ModelAdmin {частный статический $ menu_title = 'Facility категории'; частный статический $ url_segment = «объектной категория»; частные статические $ managed_models = массив ( 'FacilityCategory'); }
user776686
1

голосов
1

ответ
147

Просмотры

Настройка ModelAdmin листинг в SilverStripe

Можно ли добавить или изменить пользовательские summary_fields в список из ModelAdmin распространяется? На самом деле я в состоянии фильтровать пользовательское поле с именем типа, но я не знаю, как настроить summary_fields. Это мой фактический код: класс Profiles3ModelAdmin распространяется ModelAdmin {открытые статические $ menu_icon = 'MySite / изображения / peoples.png'; общественные статические $ managed_models = массив ( 'член'); общественности статической $ url_segment = 'membres'; общественности статической $ menu_title = 'Membres'; общественные функции GetList () {$ группа = Group :: получить () -> фильтр ( 'Код', массив ( 'Membres')) -> первый (); $ Список = $ группы-> Пользователи () -> фильтр ( 'Type', 1); вернуть список $; }}
StefGuev
1

голосов
1

ответ
226

Просмотры

Using reverse (Parental)ManyToManyField in ModelAdmin

Похоже на мой предыдущий вопрос, я пытаюсь использовать связанную модель в рамках ModelAdmin. (Это потому, что я хотел бы, чтобы это было доступно в обоих видах администратора.) На этот раз, однако, я использую новую ParentalManyToManyField или просто нормальный ManyToManyField, который, кажется, натворить. Я написал следующую структуру: класс B (модель): # или упорядочиваемый ... edit_handler = TabbedInterface ([ObjectList ([FieldPanel ( 'АЕС', виджет = CheckboxSelectMultiple)], заголовок = _ ( 'Айз'),), ]) класс A (ClusterableModel): ... пчелы = ParentalManyToManyField (B, related_name = 'АЕС', пустой = True,) ... edit_handler = TabbedInterface ([ObjectList ([FieldPanel ( 'пчелы', виджет = CheckboxSelectMultiple), ], заголовок = _ ( 'Пчелы'
Dekker1
1

голосов
2

ответ
703

Просмотры

Django администратора: Как я могу добавить неродственного поле модели к модели изменения / добавления страницы?

У меня есть следующие модели: класс Foo (models.Model): field1 = models.IntegerField () ... класс Bar (models.Model): field1 = models.IntegerField () ... класс foo_bar (models.Model): Foo = models.ForeignKey (Foo) бар = models.ForeignKey (Bar) ... в админа, я хочу это так, что в изменении Foo / добавить страницу, вы можете указать объект Bar, и сохранить Я хочу создать объект foo_bar для представления связи. Как я могу сделать это с помощью настройки администратора сайта / ModelAdmins? Обратите внимание, что встраивание не совсем то, что мне нужно, потому что нет никакого явного внешнего ключа между Foo и баром. И второе, я на самом деле не хочу редактировать штриховые объекты, я просто хочу, чтобы выбрать из числа тех, которые находятся в системе. Благодарю.
Neil
18

голосов
5

ответ
13.7k

Просмотры

Изменение списка отображения ссылка на Джанго администратора

Я пытаюсь изменить ссылку на объект на экране Джанго списка администратора. Вот то, что я до сих пор: класс FooModelAdmin (admin.ModelAdmin): поля = ( 'Foo', 'бар') list_display = ( 'foo_link', 'бар') Защита foo_link (я, объект): возвращение и '% S'% (obj.foo, объект) domain_link.allow_tags = True domain_link.short_description = "Foo" Это дает еще одно звено в пределах отображения ссылки исходного списка, например, Foo
tomfmason
4

голосов
1

ответ
820

Просмотры

Django Many to Many and admin

I have a django ap which has a rather complicated model setup. I ended up using multi level composition to create a hierarchical model. All the relations are one to one, so I could have use inheritance but I chose not to so that i would benefit from having object composition for my models, this means I can do things like product.outerframe.top.cost which make the complicated calculations I have to preform, a lot better organised. However, This model arrangement makes using the django admin tricky. I basically have a through table, i.e the outerframe table is just a bunch of foreign keys to other tables (with unique constraint on each). I ended up oerriding the add_view() and change_view() methods of ModelAdmin, which is pretty hard. Is there an easier way to deal with many to many / through tables when using the django admin? The tables are arranged like so: Product > outerframe, innerframe, glass, other outerframe > top, bottom, side etc. innerframe > top, bottom, side etc. glass > glass_type etc. other > accessories etc. Here are my models: class Product(mixins.ProductVariables): name = models.CharField(max_length=255) sku = models.CharField(max_length=100, unique=True, db_index=True) image = thumbnail.ImageField(upload_to='product_images', blank=True) description = models.TextField(blank=True) group = models.ForeignKey('ProductGroup', related_name='products', null=True) hidden = models.BooleanField(default=False) product_specific_mark_up = models.DecimalField(default=1.0, max_digits=5,decimal_places=2) # Methods for totals def total_material_cost(self, width, height, options): return sum([ self.outerframe.cost(width, height, options), self.innerframe.cost(width, height, options), self.glass.cost(width, height, options), self.other.cost(width, height, options), ]) def total_labour_time(self, width, height, options): return sum([ self.outerframe.labour_time(width, height, options), self.innerframe.labour_time(width, height, options), self.glass.labour_time(width, height, options), self.other.labour_time(width, height, options), ]) def total_co2_output(self, width, height, options): return sum([ self.outerframe.co2_output(width, height, options), self.innerframe.co2_output(width, height, options), self.glass.co2_output(width, height, options), self.other.co2_output(width, height, options), ]) @property def max_overall_width(self): return 1000 @property def max_overall_height(self): return 1000 def __unicode__(self): return self.name class OuterFrame(models.Model, mixins.GetFieldsMixin, mixins.GetRelatedClassesMixin): top = models.OneToOneField(mixins.TopFrame) bottom = models.OneToOneField(mixins.BottomFrame) side = models.OneToOneField(mixins.SideFrame) accessories = models.OneToOneField(mixins.Accessories) flashing = models.OneToOneField(mixins.Flashing) silicone = models.OneToOneField(mixins.Silicone) product = models.OneToOneField(Product) def cost(self, width, height, options): #accessories_cost = (self.accessories.cost if options['accessories'] else 0) #flashing_cost = (self.flashing.cost if options['flashing'] else 0) #silicone_cost = (self.silicone.cost if options['silicone'] else 0) return sum([ self.top.cost * (width / 1000), self.bottom.cost * (width / 1000), self.side.cost * (width*2 / 1000), #accessories_cost, #flashing_cost, #silicone_cost, ]) def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement @classmethod def get_fields(cls): options = cls._meta fields = {} for field in options.fields: if field.name == 'product': continue if isinstance(field, models.OneToOneField): related_cls = field.rel.to related_fields = fields_for_model(related_cls, fields=related_cls.get_fields()) fields.update( { related_cls.__name__ + '_' + name:field for name, field in related_fields.iteritems() }) return fields class InnerFrame(models.Model, mixins.GetFieldsMixin, mixins.GetRelatedClassesMixin): top = models.OneToOneField(mixins.TopFrame) bottom = models.OneToOneField(mixins.BottomFrame) side = models.OneToOneField(mixins.SideFrame) accessories = models.OneToOneField(mixins.Accessories) product = models.OneToOneField(Product) def cost(self, width, height, options): #accessories_cost = (self.accessories.cost if options['accessories'] else 0) print self.top.cost return sum([ self.top.cost * (width / 1000), self.bottom.cost * (width / 1000), self.side.cost * (width*2 / 1000), # accessories_cost, ]) def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement class Glass(models.Model, mixins.GetRelatedClassesMixin): glass_type_a = models.OneToOneField(mixins.GlassTypeA) glass_type_b = models.OneToOneField(mixins.GlassTypeB) enhanced = models.OneToOneField(mixins.Enhanced) laminate = models.OneToOneField(mixins.Laminate) low_iron = models.OneToOneField(mixins.LowIron) privacy = models.OneToOneField(mixins.Privacy) anti_slip = models.OneToOneField(mixins.AntiSlip) heat_film_mirror = models.OneToOneField(mixins.HeatMirrorField) posished_edges = models.OneToOneField(mixins.PolishedEdges) product = models.OneToOneField(Product) def cost(self, width, height, options): return sum([ ]) def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement class Other(models.Model, mixins.GetRelatedClassesMixin): num_packages = models.OneToOneField(mixins.NumberPackages) product = models.OneToOneField(Product) def cost(self, width, height, options): return 100 def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement mixins: class TimeCostMixin(models.Model, GetFieldsMixin): cost = models.DecimalField(default=0.0, max_digits=10, decimal_places=2) time = models.TimeField(default=datetime.timedelta(0)) class Meta: abstract = True ##### Frame ##### class FrameComponentMixin(TimeCostMixin): external_width = models.IntegerField(default=0) material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class Meta: abstract = True class TopFrame(FrameComponentMixin): pass class BottomFrame(FrameComponentMixin): pass class SideFrame(FrameComponentMixin): pass class Accessories(TimeCostMixin): material_weight = models.DecimalField(default=0.0,max_digits=10,decimal_places=2) class Flashing(TimeCostMixin): pass class Silicone(TimeCostMixin): labour_time = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) ################# ##### Glass ##### class GlassTypeA(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class GlassTypeB(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class Enhanced(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class Laminate(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class LowIron(TimeCostMixin): pass class Privacy(TimeCostMixin): pass class AntiSlip(TimeCostMixin): pass class HeatMirrorField(TimeCostMixin): u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class PolishedEdges(models.Model): cost = models.DecimalField(default=0.0, max_digits=10, decimal_places=2) ################## ##### other ##### class NumberPackages(models.Model): number_of_packages = models.IntegerField(default=0) ################## and a hair pulling admin! class ProductAdmin(AdminImageMixin, admin.ModelAdmin): inlines = [ProductDownloadInline, ProductConfigurationInline] add_form_template = 'admin/products/add_form.html' change_form_template = 'admin/products/add_form.html' @csrf_protect_m @transaction.atomic def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} "The 'add' admin view for this model." model = self.model opts = model._meta if not self.has_add_permission(request): raise PermissionDenied ModelForm = self.get_form(request) formsets = [] inline_instances = self.get_inline_instances(request, None) if request.method == 'POST': form = ModelForm(request.POST, request.FILES) if form.is_valid(): new_object = self.save_form(request, form, change=False) form_validated = True else: form_validated = False new_object = self.model() prefixes = {} for FormSet, inline in zip(self.get_formsets(request), inline_instances): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(data=request.POST, files=request.FILES, instance=new_object, save_as_new="_saveasnew" in request.POST, prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) ##### outer_frame_forms = [ modelform_factory(cls)(request.POST, prefix='OuterFrame_'+cls.__name__) for cls in models.OuterFrame.get_related_classes(exclude=['product']) ] inner_frame_forms = [ modelform_factory(cls)(request.POST, prefix='InnerFrame'+cls.__name__) for cls in models.InnerFrame.get_related_classes(exclude=['product']) ] glass_forms = [ modelform_factory(cls)(request.POST, prefix='InnerFrame'+cls.__name__) for cls in models.Glass.get_related_classes(exclude=['product']) ] other_forms = [ modelform_factory(cls)(request.POST, prefix='InnerFrame'+cls.__name__) for cls in models.Other.get_related_classes(exclude=['product']) ] ##### if all_valid(formsets +outer_frame_forms +inner_frame_forms +glass_forms +other_forms ) and form_validated: self.save_model(request, new_object, form, False) self.save_related(request, form, formsets, False) self.log_addition(request, new_object) ##### save object hierichy ##### # inner frame inner_frame = models.InnerFrame() inner_frame.product = new_object mapping = {f.rel.to:f.name for f in models.InnerFrame._meta.fields if f.name not in ['id','product']} for f in inner_frame_forms: obj = f.save() setattr(inner_frame, mapping[obj.__class__], obj) inner_frame.save() # outer frame outer_frame = models.OuterFrame() outer_frame.product = new_object mapping = {f.rel.to:f.name for f in models.OuterFrame._meta.fields if f.name not in ['id','product']} for f in outer_frame_forms: obj = f.save() setattr(outer_frame, mapping[obj.__class__], obj) outer_frame.save() # glass glass = models.Glass() glass.product = new_object mapping = {f.rel.to:f.name for f in models.Glass._meta.fields if f.name not in ['id','product']} for f in glass_forms: obj = f.save() setattr(glass, mapping[obj.__class__], obj) glass.save() # other other = models.Other() other.product = new_object mapping = {f.rel.to:f.name for f in models.Other._meta.fields if f.name not in ['id','product']} for f in other_forms: obj = f.save() setattr(other, mapping[obj.__class__], obj) other.save() ################################# return self.response_add(request, new_object) else: forms = SortedDict({}) forms['Outer Frame Variables'] = { cls.__name__: modelform_factory(cls)(prefix='OuterFrame_'+cls.__name__) for cls in models.OuterFrame.get_related_classes(exclude=['product']) } forms['Inner Frame Variables'] = { cls.__name__: modelform_factory(cls)(prefix='InnerFrame'+cls.__name__) for cls in models.InnerFrame.get_related_classes(exclude=['product']) } forms['Glass Variables'] = { cls.__name__: modelform_factory(cls)(prefix='InnerFrame'+cls.__name__) for cls in models.Glass.get_related_classes(exclude=['product']) } forms['Other Variables'] = { cls.__name__: modelform_factory(cls)(prefix='InnerFrame'+cls.__name__) for cls in models.Other.get_related_classes(exclude=['product']) } extra_context['forms'] = forms # Prepare the dict of initial data from the request. # We have to special-case M2Ms as a list of comma-separated PKs. initial = dict(request.GET.items()) for k in initial: try: f = opts.get_field(k) except models.FieldDoesNotExist: continue if isinstance(f, models.ManyToManyField): initial[k] = initial[k].split(",") form = ModelForm(initial=initial) prefixes = {} for FormSet, inline in zip(self.get_formsets(request), inline_instances): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(instance=self.model(), prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) adminForm = helpers.AdminForm(form, list(self.get_fieldsets(request)), self.get_prepopulated_fields(request), self.get_readonly_fields(request), model_admin=self) media = self.media + adminForm.media inline_admin_formsets = [] for inline, formset in zip(inline_instances, formsets): fieldsets = list(inline.get_fieldsets(request)) readonly = list(inline.get_readonly_fields(request)) prepopulated = dict(inline.get_prepopulated_fields(request)) inline_admin_formset = helpers.InlineAdminFormSet(inline, formset, fieldsets, prepopulated, readonly, model_admin=self) inline_admin_formsets.append(inline_admin_formset) media = media + inline_admin_formset.media context = { 'title': _('Add %s') % force_text(opts.verbose_name), 'adminform': adminForm, 'is_popup': IS_POPUP_VAR in request.REQUEST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), 'app_label': opts.app_label, 'preserved_filters': self.get_preserved_filters(request), } context.update(extra_context or {}) return self.render_change_form(request, context, form_url=form_url, add=True)
TimRich
2

голосов
1

ответ
680

Просмотры

ModelAdmin, внешний ключ отношения цепь

Интересно, если это возможно, в чистом виде, чтобы напечатать ForeignKey цепи в ModelAdmin: Изображение у нас есть эта структура: класс М (models.Model): фа = models.EmailField () класс Mb (models.Model): Fb = модели .ForeignKey ( 'Ma') класс Mc (models.Model): имя = models.CharField (max_length = 50) к = models.ForeignKey ( 'Mb') Теперь ModelAdmin: Edit: (Это не относится) класс McAdmin ( admin.ModelAdmin): list_display = ( 'имя', 'fc__fb__fa') Или как я могу решить эту проблему?
Rickard Zachrisson
2

голосов
1

ответ
732

Просмотры

Why does Django keeps asking content types are stale and need to be deleted

I've tried everything found: Can stale content types be automatically deleted in Django? Deleting unused Models, stale content types prompt InvalidBasesError: Cannot resolve bases for [] Django Wagtail CMS migrate: Cannot resolve bases for [ Django migrate with zinnia- InvalidBasesError: Cannot resolve bases for [] So here's my problem: I have: a ComicBook that has a many-to-many Planche's a Planche that has a many-to-many Bande's a Bande that has a many-to-many Vignette's ... and three levels deeper (it's not important it's always the same principle) I needed in-between many-to-many tables to add "importance" field to be able to make a custom sort of the relationships. Thus I've created a ComicBookPlanche that is the many-to-many table with field importance a PlancheBande that is the many-to-many table with field importance Everything was working perfectly until I decide to rename ComicBook to Book. From now on I always get the message django.db.migrations.state.InvalidBasesError: Cannot resolve bases for... I even tried to drop all the tables and migration folder, nothing changed... I tried to comment my application -> great then un-comment and still: django.db.migrations.state.InvalidBasesError: Cannot resolve bases for [, , , ] I'm getting mad. So here's what I did: brand new application makemigrations then migrate -> auth, admin, sessions, sites created no problem copy/paste my models.py without admin.py. makemigrations -> perfect: Migrations for 'main': 0001_initial.py: - Create model Bande - Create model BandeVignette - Create model Bulle - Create model ContenuCourt - Create model ContenuLong - Create model Langue - Create model Livre - Create model Personne - Create model Planche - Create model PlancheBande - Create model TexteCourt - Create model TexteLong - Create model Vignette - Add field description to planche - Add field planches to livre Then migrate -> perfect: Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: sessions, admin, sites, auth, contenttypes, main Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying main.0001_initial... OK Process finished with exit code 0 Then copy/paste my admin.py then makemigrations -> perfect: Migrations for 'main': 0002_livreplanchesthrough_textecourttextesthrough_textelongtextesthrough_vignettebullesthrough.py: - Create proxy model LivrePlanchesThrough - Create proxy model TexteCourtTextesThrough - Create proxy model TexteLongTextesThrough - Create proxy model VignetteBullesThrough Process finished with exit code 0 Then each time I try migrate it keeps asking me this, no matter if I anwser "yes" or "no": >>> migrate Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: sessions, admin, sites, auth, contenttypes, main Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: No migrations to apply. The following content types are stale and need to be deleted: main | textelong_textes main | textecourt_textes main | livre_planches main | vignette_bulles Any objects related to these content types by a foreign key will also be deleted. Are you sure you want to delete these content types? If you're unsure, answer 'no'. Type 'yes' to continue, or 'no' to cancel: yes Process finished with exit code 0 What can I do to make him stop asking, and what is the problem?
Olivier Pons
4

голосов
1

ответ
715

Просмотры

SilverStripe 3: ModelAdmin с DataObject с $ has_many к DataObject дает ошибку

В SilverStripe 3 У меня есть два связанных DataObjects, порядок и OrderItem. Орден имеет много OrderItems. OrderItem имеет один орден. Я управляю заказом с ModelAdmin. Я могу создать новый OrderItem, но когда он пытается загрузить я получаю следующее сообщение об ошибке:.... SELECT DISTINCT "OrderItem" "ClassName", "OrderItem" "Created", "OrderItem" "LastEdited", "OrderItem" "ItemQuantity », "OrderItem". "ItemDiscount", "OrderItem". "OrderID", "OrderItem". "ProductID", "OrderItem". "ID", случай, когда "OrderItem". "ИмяКласса" IS NOT NULL THEN "OrderItem" . "ИмяКласса" ELSE END 'OrderItem' AS "RecordClassName", "продукт". "Название" FROM "OrderItem" ГДЕ ( "OrderID" = '9') и (. "OrderItem" "ID" = 11) ORDER BY Product.Title ASC LIMIT 1 Неизвестный столбец 'Product.Title' в 'списке поля' Вот мой код: класс Order продолжается DataObject {открытые статические $ дб = массив ( 'OrderDate' => 'Дата', 'FulfilledDate' => 'Дата', 'OrderStatus' => 'Enum ( "Новый, InvoiceRequested, InvoiceSent, Пайде, Отменено")', ' ShippingStatus '=>' Enum ( "неотправленная, погружено")»); открытые статические $ has_one = массив ( 'Клиент' => 'Клиент'); открытые статические $ has_many = массив ( 'ТоварыЗаказа' => 'OrderItem'); // ... } Класс OrderItem расширяет DataObject {открытые статические $ дб = массив ( 'ItemQuantity' => 'Int', 'ItemDiscount' => 'Десятичные'); общественные статические $ summary_fields = массив ( 'Product.Title', 'ItemQuantity', 'ItemDiscount'); открытые статические $ has_one = массив ( 'Order' => 'Order', 'продукт' => 'Product'); // ...} Любые мысли о том, как я могу добавить присоединиться ModelAdmin к объекту Продукт / таблицы? Edit Я нашел эту проблему я имел. открытые статические $ default_sort = массив ( 'Product.Title'); Удаление, что исправили проблему. общественные статические $ summary_fields = массив ( 'Product.Title', 'ItemQuantity', 'ItemDiscount'); открытые статические $ has_one = массив ( 'Order' => 'Order', 'продукт' => 'Product'); // ...} Любые мысли о том, как я могу добавить присоединиться ModelAdmin к объекту Продукт / таблицы? Edit Я нашел эту проблему я имел. открытые статические $ default_sort = массив ( 'Product.Title'); Удаление, что исправили проблему. общественные статические $ summary_fields = массив ( 'Product.Title', 'ItemQuantity', 'ItemDiscount'); открытые статические $ has_one = массив ( 'Order' => 'Order', 'продукт' => 'Product'); // ...} Любые мысли о том, как я могу добавить присоединиться ModelAdmin к объекту Продукт / таблицы? Edit Я нашел эту проблему я имел. открытые статические $ default_sort = массив ( 'Product.Title'); Удаление, что исправили проблему. } Любые мысли о том, как я могу добавить присоединиться ModelAdmin к объекту Продукт / таблицы? Edit Я нашел эту проблему я имел. открытые статические $ default_sort = массив ( 'Product.Title'); Удаление, что исправили проблему. } Любые мысли о том, как я могу добавить присоединиться ModelAdmin к объекту Продукт / таблицы? Edit Я нашел эту проблему я имел. открытые статические $ default_sort = массив ( 'Product.Title'); Удаление, что исправили проблему.
Miles Parker
2

голосов
1

ответ
460

Просмотры

Что такое использование третьего типа в документации ModelAdmin.list_filter? [Джанго]

Документация ModelAdmin для Django 1.6 имеет то, что смущает меня. На https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter, третий тип не имеет смысла для меня. В документации сказано, существует три типа, которые могут быть использованы для list_filter и дает краткий пример каждого из них. Третий пример: класс PersonAdmin (admin.ModelAdmin): list_filter = (( «is_staff», admin.BooleanFieldListFilter)) Этот пример меня смущает, потому что я уже могу передать логическое поле для list_filter и есть администратор визуализации All | Да | нет выбора, я не уверен, что точка третьего типа. Может кто-нибудь разработать немного на этом третьем примере и почему человек будет использовать ( «field_name», admin.BooleanFieldListFilter)?
Martin Wolff
2

голосов
1

ответ
2.5k

Просмотры

Django администратора: использовать один-к-одному в search_fields

Я пытаюсь добавить поиск в моей странице списка модель администрирования с помощью следующей модели и классы ModelAdmin: models.py из django.contrib.auth.models импортировать класс User UserProfile (models.Model): пользователя = models.OneToOneField (User ) страна = CountryField (пустой = True, нуль = True) admin.py из django.contrib импорта админ из моделей импорта UserProfile класса UserProfileAdmin (admin.ModelAdmin): list_display = ( 'пользователь', 'страна') search_fields = [ 'пользователь «] Но я получаю следующее сообщение об ошибке при попытке получить доступ к UserProfile в панели администратора: в / админ / профили / профиль_пользователя / Связанные поле имеет недопустимое поиск: icontains Я также пробовал следующее: search_fields = [» user_username '] и search_fields = [ 'user_name'] Защита user_name (я, OBJ): возвращение obj.user.имя_пользователя Любые решения?
Ryu_hayabusa
5

голосов
1

ответ
4.2k

Просмотры

django admin save_model not saving model changes

This is my admin.py: class TransactionInfoAdmin(admin.ModelAdmin): search_fields=['transactionId','subscriptionInfo__customerNumber'] save_on_top = False def has_add_permission(self,request): return False def has_delete_permission(self, request, obj=None): return False def get_readonly_fields(self, request, obj=None): if obj: return self.readonly_fields + ('subscriptionInfo','transactionId','authorizationId','responseCode','operation','batchNumber','merchantId') return self.readonly_fields def save_model(self, request, obj, form, change): #SUCCESS ACTIONS obj.subscriptionInfo.paid = 1 obj.save() pass When I am saving the obj.subscriptionInfo.paid = 1 its not updating the data row, any ideas why? NOTE: subscriptionInfo is foreign key in the above model TransactionInfo. -------------------------- UPDATE -------------------------- My model.py class SubscriptionInfo(models.Model): subscriptionId = models.CharField(max_length=50) customerNumber = models.IntegerField() subscriptionType = models.CharField(max_length=50, default="basic") currency = models.CharField(max_length=50, default="NOK") paid = models.IntegerField(default=0) class Meta: verbose_name = "Subscription Information" verbose_name_plural = "Subscription Information" def __unicode__(self): return u'%s' % self.customerNumber class TransactionInfo(models.Model): subscriptionInfo = models.ForeignKey(SubscriptionInfo, db_column='f') authorizationId = models.IntegerField() transactionId = models.TextField() batchNumber = models.IntegerField() merchantId = models.IntegerField() operation = models.CharField(max_length=50) responseCode = models.CharField(max_length=50) paidDate = models.DateField(_("Date"), default=datetime.date.today) class Meta: verbose_name = "Transaction Information" verbose_name_plural = "Transaction Information" def __unicode__(self): return u'Transaction : %s' % self.pk Anyone?
Maverick
3

голосов
1

ответ
406

Просмотры

Трясогузка ModelAdmin рядный?

Я использую модуль ModelAdmin трясогузки (не то же самое, как Джанго ModelAdmin), чтобы добавить модель на заказ заказ на трясогузка администратора. Эта модель имеет внешний ключ к пользовательской адресной модели. Я хотел бы, чтобы отобразить модель адреса в качестве встраиваемого (как в админ Джанго) в InspectView (который я включен). В настоящее время он отображает строковое представление.
jramm
2

голосов
3

ответ
1.6k

Просмотры

Как получить встроенные объекты в методе сохранения в models.py

когда в админ кто-то сохранить фактуру с его линий (один руды более) сумма счета рассчитывается. Я пытался сделать это с помощью переопределения метода сохранения: класс счета-фактуры (models.Model) число = models.CharField (verbose_name = "Число", max_length = 16) issue_date = models.DateTimeField (verbose_name = "Дата выдачи", по умолчанию = datetime.now) всего = models.FloatField (verbose_name = "Всего", пустой = True, нуль = True) защиту сохранить (самостоятельно, * арг, ** kwargs): invoice_lines = InvoiceLine.objects.filter (счет-фактура = я. ID) self.total = 0 для линии в invoice_lines: self.total = self.total + line.line_total супер (счет-фактура, самостоятельно) .save (* арг, ** kwargs) проблема заключается в том, что при добавлении элементов в InvoiceLine , в первый раз я сохраню и functionsave называется, новые элементы в инлайн (InvoiceLine) еще не хранится, поэтому, когда я InvoiceLine.objects.filter (счет-фактура = self.id), они не будут приняты во внимание. Таким образом, единственный способ это работает, экономия в два раза. Я также попытался: Защиту сохранить (самостоятельно, * арг ** kwargs): супер (счет-фактура, самостоятельно) .save (* арг, ** kwargs) invoice_lines = InvoiceLine.objects.filter (счет-фактура = self.pk) самостоятельно .total = 0 для линии в invoice_lines: self.total = self.total + line.line_total супер (счет-фактура, самостоятельно) .save (* Args, ** kwargs), но имеет тот же результат. Любая идея? Заранее спасибо! ** kwargs) invoice_lines = InvoiceLine.objects.filter (счет = self.pk) self.total = 0 для линии в invoice_lines: self.total = self.total + line.line_total супер (счет-фактура, самостоятельно) .save (* арг ** kwargs), но имеет тот же результат. Любая идея? Заранее спасибо! ** kwargs) invoice_lines = InvoiceLine.objects.filter (счет = self.pk) self.total = 0 для линии в invoice_lines: self.total = self.total + line.line_total супер (счет-фактура, самостоятельно) .save (* арг ** kwargs), но имеет тот же результат. Любая идея? Заранее спасибо!
bcap
7

голосов
1

ответ
984

Просмотры

Точный поиск поля в админке Django

Я пытаюсь настроить администратор привязки Django для конкретной модели, так что я могу быстро фильтровать по точному значению конкретного поля. Я знаю, что могу вручную подделать с параметрами GET сделать это: fieldname__exact = Foobar То, что я не могу сделать, это получить боковую панель, чтобы отобразить небольшую форму, где я могу ввести это значение. Я знаю, что может добавить к имя_полю list_filter, но это не очень хорошо масштабируется за десятки уникальных значений. Я посмотрел в Джанго продвинутой-фильтры для немного, но это не похоже, чтобы быть совместимыми с Django 1.11. Как я могу осуществить точный поиск определенного поля в админке Django?
Pieter
3

голосов
1

ответ
70

Просмотры

JavaScript Callback After SilverStripe Grid Field Extensions Reorder?

У меня есть ModelAdmin с MyDataObject has_many AnotherDataObject и модуля SilverStripe сетки на местах Extensions, который управляет класс TestAdmin расширяет ModelAdmin {статические $ managed_models = массив ( «MyDataObject»); Статический $ url_segment = 'TestAdmin'; статические $ menu_title = 'TestAdmin'; } Класс MyDataObject расширяет DataObject {частный статический $ дб = массив ( 'Name' => 'Varchar (255)'); частный статический $ has_many = массив ( 'AnotherDataObjects' => 'AnotherDataObject'); Функция getCMSFields () {$ поля = родитель :: getCMSFields (); если ($ сетки = $ Поля-> dataFieldByName ( 'AnotherDataObjects')) {$ сеточного> GetConfig () -> removeComponentsByType ( 'GridFieldAddExistingAutocompleter') -> addComponent (новые GridFieldOrderableRows ( 'Приоритет')); $ Поля-> removeByName ( 'AnotherDataObjects'); $ Поля-> InsertAfter ($ сетки, 'Name'); } Вернуть $ поля; }} Класс AnotherDataObject расширяет DataObject {частный статический $ дб = массив ( 'Name' => 'Varchar (255)', 'Приоритет' => 'Int'); частный статический $ has_one = массив ( 'MyDataObject' => 'MyDataObject'); } Я могу видеть, что «перезаказ» называется, как бы я к ним, например ... оповещению ( «Reorder Complete!»); ... будут называться, когда система завершаются с изменениями баз данных? InsertAfter ($ сетки, 'Name'); } Вернуть $ поля; }} Класс AnotherDataObject расширяет DataObject {частный статический $ дб = массив ( 'Name' => 'Varchar (255)', 'Приоритет' => 'Int'); частный статический $ has_one = массив ( 'MyDataObject' => 'MyDataObject'); } Я могу видеть, что «перезаказ» называется, как бы я к ним, например ... оповещению ( «Reorder Complete!»); ... будут называться, когда система завершаются с изменениями баз данных? InsertAfter ($ сетки, 'Name'); } Вернуть $ поля; }} Класс AnotherDataObject расширяет DataObject {частный статический $ дб = массив ( 'Name' => 'Varchar (255)', 'Приоритет' => 'Int'); частный статический $ has_one = массив ( 'MyDataObject' => 'MyDataObject'); } Я могу видеть, что «перезаказ» называется, как бы я к ним, например ... оповещению ( «Reorder Complete!»); ... будут называться, когда система завершаются с изменениями баз данных? MyDataObject»=> 'MyDataObject'); } Я могу видеть, что «перезаказ» называется, как бы я к ним, например ... оповещению ( «Reorder Complete!»); ... будут называться, когда система завершаются с изменениями баз данных? MyDataObject»=> 'MyDataObject'); } Я могу видеть, что «перезаказ» называется, как бы я к ним, например ... оповещению ( «Reorder Complete!»); ... будут называться, когда система завершаются с изменениями баз данных?
Barry
33

голосов
9

ответ
23.6k

Просмотры

Отключить ссылку для редактирования объекта в админ Джанго (список отображения только)?

В администратора Django, я хочу отключить ссылки, представленные на «выберите пункт, чтобы изменить» страницу, так что пользователи не могут пойти куда-нибудь, чтобы изменить элемент. (Я не буду ограничивать то, что пользователи могут делать с этим списком к набору ниспадающих действий - не фактическое редактирования полей). Я вижу, что Django имеет возможность выбрать, какие поля отображать ссылку, однако, я не могу видеть, как я могу не иметь ни одного из них. Класс HitAdmin (admin.ModelAdmin): list_display = ( 'пользователь', 'ф', 'user_agent', 'HitCount') search_fields = ( 'ф', 'user_agent') date_hierarchy = 'создано' list_display_links = [] # Безразлично» т работа идет по умолчанию любые идеи, как получить мой список объектов без каких-либо ссылок на редактирование?
thornomad
3

голосов
1

ответ
417

Просмотры

Как отобразить list_filter с подсчета объектов, связанных в Джанго администратора?

Как я могу отобразить количество соответствующих объектов после каждого фильтра в list_filter в Джанго администратора? Класс Application (TimeStampModel): Имя = models.CharField (verbose_name = 'CI Name', max_length = 100, уникальный = True) Описание = models.TextField (пустой = True, help_text = "Бизнес-приложение") Класс сервера (TimeStampModel): имя = models.CharField (max_length = 100, verbose_name = 'имя сервера', уникальный = True) компания = models.CharField (max_length = 3, выбор = constants.COMPANIES.items ()) онлайн = models.BooleanField (по умолчанию = True , пустой = True, verbose_name = 'OnLine') application_members = models.ManyToManyField ( 'Application', через 'Rolemembership' =, through_fields = ( 'сервер', 'приложение'),) класс Rolemembership (TimeStampModel):
Stryker
2

голосов
1

ответ
167

Просмотры

DataObject + TranslatableDataObject + ModelAdmin

Настройка: СС 3.1.13, Translatable 2.0.8 и TranslatableDataObject DEV-мастер. У меня есть два DataObject класса: «Объект» ($ HAS_ONE) и «FacilityType» ($ has_many), который я выбрал управляться в ModelAdmin (так как они являются глобальными свойствами владельца сайта). Я не могу, однако получить расширение TranslatableDataObject на самом деле обеспечения перевода для них, несмотря на тщательно читать инструкции по установке здесь. Вот мой _config.php: // Установить сайт локали i18n :: set_locale ( 'en_US'); SiteConfig :: add_extension ( 'Translatable'); // Установка разрешено Локали переводимые :: set_allowed_locales (массив ( 'en_US', 'pl_PL')); TranslatableDataObject :: set_locales (массив ( 'en_US', 'pl_PL')); Facility :: add_extension ( "Translatable"); Facility :: add_extension ( "TranslatableDataObject"); // пытались "TranslatableDataObject ( 'Title')", а также FacilityCategory :: add_extension ( "Translatable"); FacilityCategory :: add_extension ( "TranslatableDataObject"); Может кто-нибудь, пожалуйста, убедитесь, что эта установка должна или не будет работать для меня? FacilityCategory.php класс FacilityCategory расширяет DataObject {частный статический $ дб = массив ( 'Title' => 'VARCHAR'); частный статический $ has_many = массив ( 'Услуги' => 'Facility.FacilityCategory'); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title')); вернуть $ поля; }} Класс FacilityCategoryAdmin расширяет ModelAdmin {частный статический $ menu_title = 'Facility категории'; частный статический $ url_segment = ' объект-категории; частные статические $ managed_models = массив ( 'FacilityCategory'); } Facility.php класс Facility расширяет DataObject {частный статический $ дб = массив ( 'Title' => 'VARCHAR'); частный статический $ has_one = массив ( 'Категория' => 'FacilityCategory'); частный статический $ summary_fields = массив ( 'Title' => 'Имя', 'Category.Title' => 'Type'); Функция getCMSFields общественных () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), DropdownField :: создать ( 'CategoryID', 'Category') -> setSource (FacilityCategory :: получить () -> Карта () -> ToArray ()) -> setEmptyString ( '- выберите категорию -' )); вернуть $ поля; }} Класс FacilityAdmin расширяет ModelAdmin {частный статический $ menu_title = 'Услуги'; частных статических $ url_segment = 'объекты'; частные статические $ managed_models = массив ( 'Facility'); }
user776686
3

голосов
2

ответ
45

Просмотры

Evaluate a readonly field upon creating a new object in Django 1.11 admin

Предполагая следующую модель класса # models.py Person (models.Model): Имя = models.CharField (max_length = 40) дата рождения = models.DateField () возраст = models.CharField (max_length = 3) # не вид типа, это просто пример :) желаемое поведение будет иметь поле возраста скрыто, когда пользователь создает новый объект Person, и оценить его значение, когда пользователь отправляет форму. Кроме того, поле возраст должен быть виден, когда смотрит на экземпляр объекта в админ. Для достижения этой цели, я создал ModelAdmin с настраиваемым ModelForm следующим образом # admin.py из django.contrib импорта админ из Джанго импорта форм из .models импорт Person из dateutil.relativedelta импорта relativedelta импорта DateTime класса PersonForm (forms.ModelForm): Защита чистые (сам): cleaned_data = супер (PersonForm, самость) .Почистить () = дата рождения cleaned_data. получить ( '') дата рождения cleaned_data [ 'возраст'] = relativedelta (datetime.date.today (), дата рождения) .years вернуть cleaned_data класс PersonAdmin (admin.ModelAdmin): сформировать = PersonForm исключить = ( 'возраст',) администратора. site.register (Person, PersonAdmin) Однако, после отправки формы, поле возраста не заполнит список, возможно, потому, что он исключен. Если я удалить то исключить это работает, но форма отображает поле возраста, который не является желаемым поведением. возможно потому, что исключается. Если я удалить то исключить это работает, но форма отображает поле возраста, который не является желаемым поведением. возможно потому, что исключается. Если я удалить то исключить это работает, но форма отображает поле возраста, который не является желаемым поведением.
Demetris
7

голосов
1

ответ
3.9k

Просмотры

ModelAdmin Ordering?

С помощью интерфейса администратора Django, как вы убедитесь, что объекты в HTML выбрать несколько сортируются в определенном порядке (в алфавитном порядке) предпочитают? Проблема в том, что у меня есть 3 модели - CD, песни, Singer. Один компакт-диск админ панель, Сонг рядный на компакт-диск и Singer является manytomany поле, которое я хотел бы сортируется! Вот мой код: model.py класс CD (models.Model): cd_name = models.CharField ( "CD Name", max_length = 50) дата = models.DateField ( "CD Release Date") фото = models.ImageField (» CD обложки», пустой = True, upload_to 'охватывает' =) певцов = models.ManyToManyField (Singer, пустой = True, нуль = True) защиту __unicode __ (Я): возвращение класса self.cd_name Song (models.Model): CID = models.ForeignKey (CD) track_num = models.PositiveIntegerField ( "Номер дорожки", max_length = 2) SONG_NAME = модели.
Chris Wherry
2

голосов
1

ответ
297

Просмотры

SilverStripe. Поиск по дате диапазона в ModelAdmin

У меня есть дата-свойство в моем DataObject. Как можно осуществлять поиск по дате диапазона в ModelAdmin? Например: «найти все пункты, где дата более 2007-13-01 и менее 2007-17-01» или «поиск всех пунктов, где дата между 2007-13-01 и 2007-17-01» Сейчас я может искать только GreaterTranFilter или LessThanFilter, но не с обоими. Класс MyObject расширяет DataObject {частный статический $ дб = [ "Дата" => "Дата",]; частные статические $ summary_fields = [ "Дата" => "Дата",]; частные статические $ searchable_fields = [=> [ "поле" "Дата" => "фильтр" "DateField" => "название" "GreaterThanFilter" => 'Дата с ...'], ]; } Кроме того, в поле поиска необходимо использовать календарь (Datepicker) DateField: default_config: ShowCalendar: правда Можете ли вы привести пример того, как осуществлять поиск по дате диапазона?
FlamyTwista
43

голосов
3

ответ
21.3k

Просмотры

Джанго: получить доступ к экземпляру модели внутри ModelAdmin?

У меня есть модель для заказов в приложении, интернет-магазина с автоинкрементным первичным ключом и внешним ключом к самому себе, так как заказы могут быть разделены на несколько порядков, но отношения к исходному порядку должны быть сохранены. класс Order (models.Model): ORDERNUMBER = models.AutoField (primary_key = True) parent_order = models.ForeignKey ( 'я', нуль = True, пусто = True, related_name = 'child_orders') # .. другие поля не имеют отношения здесь Я зарегистрировал класс OrderAdmin для администратора сайта. Для зрения детализации, я включил parent_order в атрибуте fieldsets. Конечно, по умолчанию это список всех заказов в поле выбора, но это не желаемое поведение. Вместо этого, для заказов, которые не имеют родительский порядок (т.е. не отколовшиеся от другого порядка; parent_order является / None NULL), не должно отображаться никаких заказов. Для заказов, которые были разделены, то это должно отображать только одну родительский заказ. Там это довольно новый метод ModelAdmin доступен, formfield_for_foreignkey, что, кажется, идеально подходит для этого, так как QuerySet могут быть отфильтрованы внутри него. Представьте себе, что мы смотрим на детальном порядка # 11234, который был разделен с приказом № 11208. Код ниже четкости formfield_for_foreignkey (я, db_field, запрос, ** kwargs): если db_field.name == 'parent_order': # kwargs [ "QuerySet"] ​​= Order.objects.filter (child_orders__ordernumber__exact = 11234) возвращение db_field.formfield (** kwargs) возвращение супер (OrderAdmin, самость) .formfield_for_foreignkey (db_field, запрос, ** kwargs) Закомментированная строка работает при запуске в оболочке Python, возвращая одного элемента QuerySet, содержащий приказ № 11208 для # 11234 и всех других заказов, которые, возможно, были расщеплены из него. Конечно, мы не можем жестко закодировать номер заказа там. Нам нужна ссылка на ORDERNUMBER поле экземпляра заказа которого подробно страница мы смотрим. Как это: kwargs [ "QuerySet"] ​​= Order.objects.filter (child_orders__ordernumber__exact = ?????) я не нашел не работает способ заменить ????? со ссылкой на «текущий» экземпляр заказа, и я вырыл довольно глубоко. самостоятельно внутри formfield_for_foreignkey относится к экземпляру ModelAdmin, и в то время, что действительно имеет атрибут модели, это не экземпляр модели порядка (это ссылка ModelBase; self.model () возвращает экземпляр, но его ORDERNUMBER пока None). Одним из решений может быть тянуть номер заказа из запроса. путь (/ администратор / заказы / заказ / 11234 /), но это действительно некрасиво. Я действительно хочу есть лучший путь.
JK Laiho
3

голосов
0

ответ
588

Просмотры

Override the Admin.py file of reusable app in Django

Я в принципе есть 2 внешних приложения Django, которые переопределяют модель UserAdmin. Каждый из них будет первым разрегистрировать модель UserAdmin, а затем зарегистрировать свое собственное, что-то вроде этого: admin.site.unregister (get_user_model ()) admin.site.register (get_user_model (), ExternalAppUserAdmin) Я тоже, в свою очередь, переопределяю UserAdmin: admin.site.unregister (get_user_model ()) admin.site.register (get_user_model (), MyAppUserAdmin) проблема в том, что в зависимости от порядка INSTALLED_APPS в файле настроек только последнее приложение будет на самом деле переопределить UserAdmin. В большинстве случаев эти переопределения просто InlineModelAdmin внутри AdminUser, так что я сделал до сих пор импортировать модели InlineModelAdmin внешнего приложение и вставить их в своем собственном admin.py. Например: от relationships.admin импорта RelationshipInline .... класс BaseProfileAdminStacked (NestedModelAdmin, GuardedModelAdmin): встраивает = [BaseProfileInline, RelationshipInline,] .... admin.site.unregister (get_user_model ()) admin.site.register (get_user_model (), BaseProfileAdminStacked) Но это кажется немного Hacky ко мне , потому что, например: Первое внешнего приложение будет разрегистрировать UserAdmin, а затем зарегистрировать его снова со своей собственной настройкой Вторым внешним приложение будет делать то же самое, на самом деле перекрывая сначала один мое собственное приложение, то следует импортировать все AdminInline из внешних приложений и включить их в моей регистрации UserAdmin Разве это не пустая трата усилий? У вас есть идея получше, чтобы сделать это? регистр (get_user_model (), BaseProfileAdminStacked) Но это кажется немного Hacky ко мне, потому что, например: Первое внешнее приложение будет разрегистрировать UserAdmin, а затем зарегистрировать его снова со своей собственной настройки Второе внешнее приложение будет делать то же самое, на самом деле переопределяя первый один мое собственное приложение должно импортировать все AdminInline из внешних приложений и включать их в своей собственной регистрации UserAdmin Разве это не пустая трата усилий? У вас есть идея получше, чтобы сделать это? регистр (get_user_model (), BaseProfileAdminStacked) Но это кажется немного Hacky ко мне, потому что, например: Первое внешнее приложение будет разрегистрировать UserAdmin, а затем зарегистрировать его снова со своей собственной настройки Второе внешнее приложение будет делать то же самое, на самом деле переопределяя первый один мое собственное приложение должно импортировать все AdminInline из внешних приложений и включать их в своей собственной регистрации UserAdmin Разве это не пустая трата усилий? У вас есть идея получше, чтобы сделать это? фактически перекрывая первый мое собственное приложение должно импортировать все AdminInline из внешних приложений и включать их в своей собственной регистрации UserAdmin Разве это не пустая трата усилий? У вас есть идея получше, чтобы сделать это? фактически перекрывая первый мое собственное приложение должно импортировать все AdminInline из внешних приложений и включать их в своей собственной регистрации UserAdmin Разве это не пустая трата усилий? У вас есть идея получше, чтобы сделать это?
Leonardo
2

голосов
1

ответ
2k

Просмотры

Как получить доступ ко всем формам из save_related FormSets в Джанго modelAdmin

Мне нужно получить доступ из двух полей от всех форм рядного FormSets когда save_related называется, и save_related дает мне доступ только измененные формы / данные. Любое другое решение моей проблемы идет, так вот она: класс счетов (models.Model): счет-фактура = models.CharField (max_length = 10, пусто = True, нуль = True, уникальный = True) всего = models.PositiveIntegerField (пусто = True, нуль = True) класс InvoiceItem (models.Model): счет-фактура = models.ForeignKey (счет-фактура, related_name = 'элементы') обслуживание = models.ForeignKey (Service) количество = models.PositiveIntegerField (пусто = False, по умолчанию = 1 ) цена = models.PositiveIntegerField (пустой = False, по умолчанию = 0) класс InvoiceItemInline (admin.TabularInline): модель = класс InvoiceItem InvoiceAdmin (admin.ModelAdmin): встраивает = [InvoiceItemInline] защиту save_related (самоповреждения, запрос, форма, FormSets,
fBSDmon
2

голосов
1

ответ
58

Просмотры

ModelAdmin со связью has_many

Я простирающийся ModelAdmin управлять DataObject и у меня есть has_many отношения $, который управляется другой DataObject. Я хотел бы управлять этим объектом на другой вкладке, но теряюсь того, как я добавить его. Мой основной код: ApplicationAdmin.php: класс приложения расширяют ModelAdmin { «Приложения» частного статических $ menu_title =; частных статических $ url_segment = 'приложения'; частные статические $ managed_models = массив ( 'Application'); } Application.php класс Application расширяет DataObject {частный статический $ дб = массив ( 'Name' => "VARCHAR"); частный статический $ has_many = массив ( 'Документы' => 'Документ'); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Name'), ); вернуть $ поля; }} Document.php класс Документ расширяет DataObject {частный статический $ дб = массив ( 'Title' => "VARCHAR",); частный статический $ has_one = массив ( "Документ" => "Файл", "Application" => "Application"); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), $ док = новый UploadField ( 'документ')); $ Doc-> getValidator () -> setAllowedExtensions (массив ( 'PDF', 'DOCX')); вернуть $ поля; }} В принципе я хотел бы управлять документами для этой записи при закладке Root.Documents. Класс PHP Документ расширяет DataObject {частный статический $ дб = массив ( 'Title' => "VARCHAR",); частный статический $ has_one = массив ( "Документ" => "Файл", "Application" => "Application"); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), $ док = новый UploadField ( 'документ')); $ Doc-> getValidator () -> setAllowedExtensions (массив ( 'PDF', 'DOCX')); вернуть $ поля; }} В принципе я хотел бы управлять документами для этой записи при закладке Root.Documents. Класс PHP Документ расширяет DataObject {частный статический $ дб = массив ( 'Title' => "VARCHAR",); частный статический $ has_one = массив ( "Документ" => "Файл", "Application" => "Application"); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), $ док = новый UploadField ( 'документ')); $ Doc-> getValidator () -> setAllowedExtensions (массив ( 'PDF', 'DOCX')); вернуть $ поля; }} В принципе я хотел бы управлять документами для этой записи при закладке Root.Documents. "Применение" => "Применение"); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), $ док = новый UploadField ( 'документ')); $ Doc-> getValidator () -> setAllowedExtensions (массив ( 'PDF', 'DOCX')); вернуть $ поля; }} В принципе я хотел бы управлять документами для этой записи при закладке Root.Documents. "Применение" => "Применение"); общественная функция getCMSFields () {$ поля = FieldList :: создать (TextField :: создать ( 'Title'), $ док = новый UploadField ( 'документ')); $ Doc-> getValidator () -> setAllowedExtensions (массив ( 'PDF', 'DOCX')); вернуть $ поля; }} В принципе я хотел бы управлять документами для этой записи при закладке Root.Documents.
Rudiger
2

голосов
0

ответ
80

Просмотры

Джанго добавление нескольких записей с тем же внешним ключом в ModelAdmin

Предположим, у меня есть задача следующие две модели и человека. Теперь каждый человек может иметь несколько задач (один-ко-многим). Теперь в приложении администратора для человека, я могу добавить только один внешний ключ для каждой записи, таким образом, я должен создать несколько записей для лица, имеющего другую задачу, но одни и те же адрес электронной почты и имя поля. Что я могу сделать в personAdmin, что позволит мне добавить несколько внешних ключи для одного человека и в бэкэнде было бы создать несколько записей? Класс задачи (models.Model): Описание = models.CharField (max_length = 100) класс человек (models.Model): задача = models.ForeignKey (Автор, on_delete = models.CASCADE) электронная почта = models.CharField (max_length = 100) имя = models.CharField (max_length = 100) класс personAdmin (admin.ModelAdmin): пропуск
James Franco
2

голосов
1

ответ
184

Просмотры

добавить текст справки в поле только для чтения в Джанго зрения администратора

Ниже мой взгляд администратора: @ admin.register (AuditStashAwsMasterPolicies) класс AuditPoliciesAdmin (reversion.VersionAdmin): исключить = [ 'source_policy_path', 'source_state', 'target_state'] readonly_fields = [ 'comparison_date', 'источник', '' source_policy_name , 'цель', 'target_policy_name', 'target_policy_path', 'policy_difference'] защиту policy_difference (я, например): возвращает drift.compare_two_policies (instance.source, instance.source_policy_name, instance.source_policy_path, instance.target, instance.target_policy_name, instance.target_policy_path) То, что я хочу сделать, это добавить текст справки к моему «policy_difference» поле только для чтения. Из справочной документации, Я только в состоянии сделать это путем изменения модели и создания поля только для чтения там с помощью текста. Дело в том, что я не хранить любые значения в поле «policy_difference» Я просто генерировать его на лету и хотел бы избежать хранения в модели. Есть ли способ, чтобы добавить текст в «» policy_difference поле только для чтения без изменения модели AuditStashAwsMasterPolicies?
Justin S
2

голосов
1

ответ
1.2k

Просмотры

Создание другой модели объектов в Джанго администратора в для цикла

Я совершенно новой для Джанго и был PHP кодер ранее, поэтому, пожалуйста, медведь со мной, если я быть немым. У меня есть три модели, определенная в моем приложении, Понимание, вопрос, ответ. Каждое понимания есть несколько вопросов и ответов, определенных как «инлайн» в модели постижения. Вопросы поступают непосредственно администратором, но ответы будут автоматически добавлены из понимания. То, что я хочу добиться того, чтобы разделить понимание в приговоры и добавить каждое предложение в качестве объекта ответа с ForeignKey текущего понимания. Я пытаюсь переопределить метод сохранить в модели постижения. Но когда я нажимаю сохранить, это дает ошибку экземпляр не удается назначить «23L»: «Answer.ComprehensionAnswer» должен быть экземпляром «Постижение». Как назначить / создать и экземпляр здесь? или я после неправильный подход. Если это так, пожалуйста, руководство меня в правильном подходе. Ниже приведены содержание класса models.py Вопрос (models.Model): QuestionText = models.CharField (max_length = 500, verbose_name = 'Вопрос Текст') QuestionTypeID = models.ManyToManyField (QuestionType, verbose_name = 'Тип вопроса') ComprehensionQuestion = models.ForeignKey (осмысление, verbose_name 'понимания' =) QuestionRemarks = models.CharField (max_length = 500, verbose_name = 'слово', NULL = True, пусто = True) LastUpdate = models.DateTimeField (auto_now = True) защиту __unicode __ (самообеспечение ): возвращает self.QuestionText защиту was_published_recently (Я): возвращение self.LastUpdate> = timezone.now () - datetime.timedelta (1) класс ответа (models.Model): ComprehensionTitle», 'ComprehensionsText']}), ( 'Дополнительная информация', { 'поля': [ 'ComprehensionsRemarks'], 'классы': [ 'коллапс']})] встраивает = [QuestionInline, AnswerInline] list_display = ( 'ComprehensionTitle', 'LastUpdate') list_per_page = 10 класс QuestionInline (admin.TabularInline): модель = Вопрос экстра = 2 класс AnswerInline (admin.TabularInline): модель = Ответ дополнительный = 2 admin.site.register (Вопрос) admin.site .register (ответ) admin.site.register (Осмысление, ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения. { 'Поля': [ 'ComprehensionsRemarks'], 'классы': [ 'коллапс']}),] Внутристрочные = [QuestionInline, AnswerInline] list_display = ( 'ComprehensionTitle', 'LastUpdate') list_per_page = 10 класс QuestionInline (администратора. TabularInline): модель = Вопрос экстра = 2 класс AnswerInline (admin.TabularInline): модель = Ответ дополнительный = 2 admin.site.register (Вопрос) admin.site.register (ответ) admin.site.register (Осмысление, ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения. { 'Поля': [ 'ComprehensionsRemarks'], 'классы': [ 'коллапс']}),] Внутристрочные = [QuestionInline, AnswerInline] list_display = ( 'ComprehensionTitle', 'LastUpdate') list_per_page = 10 класс QuestionInline (администратора. TabularInline): модель = Вопрос экстра = 2 класс AnswerInline (admin.TabularInline): модель = Ответ дополнительный = 2 admin.site.register (Вопрос) admin.site.register (ответ) admin.site.register (Осмысление, ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения. ComprehensionTitle», 'LastUpdate') list_per_page = 10 класс QuestionInline (admin.TabularInline): модель = Вопрос экстра = 2 класса AnswerInline (admin.TabularInline): модель = Ответ дополнительного = 2 admin.site.register (Вопрос) admin.site. регистр (ответ) admin.site.register (понимание, ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения. ComprehensionTitle», 'LastUpdate') list_per_page = 10 класс QuestionInline (admin.TabularInline): модель = Вопрос экстра = 2 класса AnswerInline (admin.TabularInline): модель = Ответ дополнительного = 2 admin.site.register (Вопрос) admin.site. регистр (ответ) admin.site.register (понимание, ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения. ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения. ComprehensionAdmin) Я также следовал подходу указан на этой странице. Но, пустой о том, как создавать объекты в фиксации состояния с использованием ForeignKey модели постижения.
Gursharan Singh
2

голосов
1

ответ
57

Просмотры

Показать скрыть DataObject столбцы в ModelAdmin с JavaScript

Пользователи имеют множество различных настроек для столбцов, которые отображаются на одной и то же DataObject в том же ModelAdmin и хотел бы управлять ими для своих сессий. Учитывая следующий DataObject ... Класс MyDataObject расширяет DataObject {статические $ дб = массив ( 'Name' => 'VARCHAR', 'Дата' => 'SS_DateTime', 'Число' => 'Десятичные (8,2)', ); общественные статические $ summary_fields = массив ( 'Name', 'Дата', 'Число'); } ... и следующий ModelAdmin ... Класс MyModelAdmin расширяет ModelAdmin {статические $ mangaged_models = массив ( 'MyDataObject',); Статический $ url_segment = 'mymodeladmin'; статические $ menu_title = 'MyModelAdmin'; статические $ menu_priority = 9; } ... есть простой Javascript единственное решение (что я бы себе хранить столбцы, выбранные в куки) или что-то более программной (то есть PHP), который будет контролировать столбцы на каждого пользователя - что позволяет каждому пользователю выбрать столбцы, которые они хотят, и это помнит его от сессии к сессии? Буду признателен за любую оказанную помощь.
Barry
2

голосов
1

ответ
286

Просмотры

Django admin add_view only renders up until change_view is displayed for first time

Я испытываю странную проблему с системой администратора Django и переопределение add_view и change_view методы для отображения различных полей для добавления и изменения данных. Вид надстройки отлично работает до тех пор, пока не появятся вид изменения, то после того, что она всегда будет отображать вид изменения вместо представления надстройки при попытке добавить новые данные. Я использую последнюю версию выпуска Django 1.9.4. Мой класс ModelAdmin довольно прост: @ admin.register (Trigger) класс TriggerAdmin (admin.ModelAdmin): Защита add_view (самость, запрос, ** kwargs): self.fields = ( 'имя', 'модули', 'trigger_event' ) self.filter_horizontal = () возвращение супер (TriggerAdmin, самость) .add_view 'модули', (запрос, ** kwargs) защиту response_add (самость, запрос, OBJ, ** kwargs): вернуть HttpResponseRedirect (».. Я предполагаю, что это не ошибка в противном случае было бы другими жалующимся об этом, так что я должен делать что-то неправильно, но я не могу видеть, что это такое. Спасибо, Пол
tRi11
4

голосов
1

ответ
185

Просмотры

Scaffold ListBox multiple select in ModelAdmin Filter for DataObject with Enum

В настоящее время автоматические подмости для поиска полей, где есть перечисление производит выпадающий только один выбор позволяет быть сделаны. Я заинтересован в использовании существующих фильтров, чтобы изменить это, чтобы позволить множественный выбор. Учитывая следующие DataObject ... Класс MyDataObject расширяет DataObject {статического $ дб = массив ( 'Name' => "Varchar (255)", 'MyEnum' => «Enum ( 'Option1, Option2, OPTION3', 'Option1') "); } ... и следующий ModelAdmin ... Класс MyModelAdmin расширяет ModelAdmin {статические $ mangaged_models = массив ( 'MyDataObject',); Статический $ url_segment = 'mymodeladmin'; статические $ menu_title = 'MyModelAdmin'; статические $ menu_priority = 9; } ... Я м ищет модуль или простой фильтр какой-то, чтобы строительные леса в Enum в множественного выбора ListBox множественного выбора ListBox определяется как ... Позволяет множественный выбор После ввода некоторых символов предложения предлагаются И я прошу общего решения - Я могу построить контекст поиска для каждой модели администратора, но это очень сложно. Что-то вроде следующего, используя либо существующий фильтр (ExactMatchMultiFilter выглядит идеально, но, кажется, не на самом деле работает) или если есть один в модуле или может кто-то подскажет, как изменить существующий фильтр для этого, что было бы здорово. Класс MyDataObject расширяет DataObject {статический $ дб = массив ( 'Имя' => "VARCHAR (255)", 'MyEnum' => "Enum ( 'Вариант1, Вариант2, OPTION3', 'Вариант1')"); общественные статические $ searchable_fields = массив ( 'MyEnum' => Array ( 'фильтр' => 'ExactMatchMultiFilter')); } Любая помощь высоко ценится.
Barry
4

голосов
1

ответ
81

Просмотры

Показать фильтр-форму в ModelAdmin SilverStripe по по умолчанию

Я добавил к моему ModelAdmin SilverStripe сайта. Это включает в себя форму фильтра, который скользит вниз, когда пользователь нажимает на значок Лупа в веб-интерфейсе. Как я могу сделать форму видимой по умолчанию (без взаимодействия с пользователем)? До сих пор я пытался вызвать ПоказатьСкрыть () из LeftAndMain.js с Entwine, но Silvertripe в значительной мере опирается на Ajax это только показывает вид на начальной странице загрузки. (Функция ($) {. $ ( '# Фильтры-кнопка') оплетают ({onadd:. Функция () {this._super (); this.entwine ( 'сс') ПоказатьСкрыть ();}});}) (JQuery);
hendra
3

голосов
1

ответ
2.9k

Просмотры

Правильно используя ссылки на внешние ключи в search_fields, Django администратора

У меня странное дилемму, что мне нужна помощь с в Django 1.8.4 с помощью питона 3.4 в виртуальной окр. У меня есть 2 модели в 2-х различных приложениях ... следующий образом с несколькими ключевыми иностранными ссылками. Инвентарь App класс InventoryItem (models.Model): item_unique_code = models.CharField (max_length = 256, пусто = False, нуль = False) категория = models.CharField (MAX_LENGTH = 256, пробел = False, нуль = False, выбор = [( 'RAW', 'сырье'), ( 'FG', 'Закончено Good'), ( 'PKG', 'Упаковка')]) имя = models.CharField (max_length = 64, пробел = False, нуль = False) поставщик = models.CharField (max_length = 96, пусто = False, нуль = False) approved_by = models.CharField (max_length = 64, редактируемые = False) date_approved = models.DateTimeField (auto_now_add = True, редактируемые = False) комментарии = модели. TextField (пустой = True, min_weight»,„max_weight“,„last_updated“,„active_by“,„active_recipe“] admin.site.register (RecipeControl, RecipeView) Проблема я столкнулся, если я пытаюсь сделать поиск по любому полю, ForeignKey Джанго бросает этот тип ошибки ... Исключение: TypeError в / админ / Рецепт / recipecontrol / Exception значение: Связанные поля получил недопустимые подстановок: icontains по и другие старые вопросы в Django Admin Дока на StackOverflow по этому вопросу он говорит, что я должен делать что-то вдоль линий search_fields = [ «inventoryitem__name»], но я думаю, что это по отношению к ФК в том же приложении model.py. Есть ли более правильный способ ссылки / импортировать другие модели от других приложений, которые я» м отсутствует или я должен использовать какой-отзывной метод магии, чтобы получить функцию поиска, чтобы правильно искать? Я пробовал множество различных комбинаций, и ничто не похоже на работу. Я относительно новым для Django, так что я уверен, что это что-то просто.
Dan2theR
2

голосов
1

ответ
147

Просмотры

SilverStripe доступ к одной странице с моделью администратора

Кто-нибудь знает, как получить доступ к DataObject записей, когда одна группа ограничивается одним разделом сайта? У меня есть разделы, как: Главная О нас Продукты | Группа изделий 1 | -> Группа продуктов 2 У меня есть проблема в том, что я могу ограничить доступ к группе «Маркетинг» и они способны просматривать и редактировать страницу (и дети-страницы), но не видят DataObject записей ( нет листинга), а также добавлять / удалять или редактировать эти записи. Если я поставлю «весь доступ администратора» к группе «Маркетинг» на это работает, но в то же этой группы имеют доступ ко всему сайту. (И я бы хотел, чтобы он просто «Продукты», и это дети. Кто-нибудь знает, как разобраться в этом?
3

голосов
3

ответ
4.1k

Просмотры

Как манипулировать поля формы в Django динамически в ModelAdmin?

У меня есть поле (пробкового), который «необходимый» в модели, но хотят, чтобы изменить поле в классе ModelAdmin быть необязательным. Если пользователь не заполняет его, он автоматически заполняется другим полем (имя). Класс SomeModel (model.Model): имя = model.CharField (max_length = 255) пробкового = model.SlugField (уникальный = True, max_length = 255) Я пытался сделать это различными способами, например, перекрывая get_form () в ModelAdmin или с помощью класс ModelForm и указав форму конкретно. Класс SomeModelAdmin (admin.ModelAdmin): Защита get_form (я, запрос, OBJ = None, ** kwargs): форма = супер (само .__ class__, самостоятельно) .get_form (запрос, OBJ, ** kwargs) не form.slug.required = False возвращения формы Однако ни решение работает для меня. Помимо создания формы вручную, есть ли другое быстрое решение? У меня есть много таких форм, и делать это вручную может быть утомительным и трудно поддерживать.
GoogleDroid
2

голосов
1

ответ
962

Просмотры

SilverStripe модель админы с дополнительной вкладкой

Я создаю модуль для SilverStripe, где настройки WebAPP может быть сконфигурирована и где приложение иконка / заставки могут быть загружены. Для этого я использовал модель администратор для управления два DataObjects, содержащей иконка / заставки. Это прекрасно работает. Но теперь у меня есть некоторые дополнительные поля, я хотел бы управлять из одной и тех же панелей администратора ( «Названия приложения», «Полноэкранного приложения», «статусных» и «минимальный UI»). было бы здорово, если бы можно добавить вкладку дополнительную к модели администратору, где я могу добавить эти поля, проблема: как я могу сохранить эти значения как создать эту дополнительную вкладку я также вижу возможности в расширении LeftAndMain для этого, но затем я потерять возможности управления DataObject на ModelAdmin. Любые советы помощь будет высоко ценится!
Bram de Leeuw

Просмотр дополнительных вопросов