![](/img/trans.png)
[英]Django, admin panel, dependence of the values of one ForeignKey field available for selection on the value selected in another ForeignKey field
[英]Default value for ForeignKey field in django admin panel
我有兩個Django模型:PageModel和RecordModel。 它們在django管理面板中注冊。 如果在頁面創建過程中未選擇記錄,我想自動創建RecordModel對象並將其分配給(PageModel的對象).record字段。 (Django Admin-添加頁面表單)我嘗試創建表單並使用了clean_record()方法,但這種方法不起作用。 (調試器沒有在那里停止)我該如何解決該問題?
模型(Sortable和SortableAdmin類是adminsortable( https://github.com/iambrandontaylor/django-admin-sortable )的一部分,但我認為這並不重要):
class Record(Sortable):
"""
Запись в книге почетных гостей
"""
class Meta(Sortable.Meta):
verbose_name = u'Запись'
verbose_name_plural = u'Записи'
author = models.CharField(verbose_name=u'Автор', max_length=255, unique=False, blank=False,
default=author_default)
def __unicode__(self):
return u'Запись {} ({})'.format(self.id, self.author)
class Page(Sortable):
"""
Страница книги почетных гостей
"""
class Meta(Sortable.Meta):
verbose_name = u'Страница'
verbose_name_plural = u'Страницы'
record = SortableForeignKey(Record, verbose_name=u'Запись', related_name='pages', blank=False, default=None)
image = models.ImageField(verbose_name=u'Картинка',
upload_to='pages',
default='',
help_text=u'Размер файла - до 10 MB. Формат PNG.',
validators=[ImageValidator(formats=['PNG'], max_size=10000000)])
updated = models.DateTimeField(verbose_name=u'Обновление', auto_now=True, null=True,
help_text=u'Время последнего изменения страницы на сервере')
def __unicode__(self):
return u'Страница {} ({})'.format(self.id, self.image)
管理員:
class PageInline(SortableTabularInline):
model = Page
@admin.register(Record)
class RecordAdmin(SortableAdmin):
list_display = ['author', 'pages_count']
inlines = [PageInline]
fields = ['author']
def pages_count(self, object):
return object.pages.count()
pages_count.short_description = u'Количество страниц'
pages_count.allow_tags = False
class PageAdminForm(forms.ModelForm):
def clean_record(self):
return self.cleaned_data["record"]
@admin.register(Page)
class PageAdmin(SortableAdmin):
list_display = ['__unicode__', 'image', 'author', 'updated']
form = PageAdminForm
readonly_fields = ['updated']
def get_fields(self, request, obj=None):
if obj:
return super(PageAdmin, self).get_fields(request, obj)
else:
return ['record', 'image']
def author(self, page):
return page.record.author
author.allow_tags = False
author.short_description = u'Автор записи'
我解決了如下問題:
在頁面模型中更改記錄字段
記錄= SortableForeignKey(記錄,verbose_name =u'Запись',related_name ='pages',null = True,空白= True,默認=無)
將save_model()方法添加到PageAdmin
def save_model(self,request,obj,form,change):如果obj.record為None:record = Record.objects.create(author = BookConfiguration.get_solo()。record_author_default +'('+ timezone.localtime(timezone.now) ())。strftime('%Y-%m-%d%H:%M:%S')+')')record.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.