Архивы: Ноябрь 2015

Bad Request (400) в django на поле ForeignKey

Возникла ошибка Bad Request (400) на вот таком примере (не буду приводить всю модель, только то что важно):

models.py

class Institution(models.Model):
    '''
    Образовательно учреждение
    '''
    name = models.CharField(max_length=255, verbose_name=u'Название')
    address = models.CharField(max_length=255, verbose_name=u'Адрес')

class CustomUser(models.Model):
    '''
    Расширяем пользовательскую модель под педагогов
    '''
    user = models.OneToOneField(User)
    phone = models.CharField(max_length=11, blank=True, null=True, verbose_name=u'Телефон')
    middle_name = models.CharField(max_length=100, blank=True, verbose_name=u'Отчетсво')
    institution = models.ForeignKey(Institution, blank=True, null=True, verbose_name=u'Учереждение')

admin.py

class CustomUserInline(admin.StackedInline):
    model = CustomUser
    can_delete = False

class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'last_name', 'first_name')
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)

На официальном сайте есть тикет по этому поводу https://code.djangoproject.com/ticket/23552 и следовательно лечим добавлением класса CustomUserAdmin

Новый admin.py

class CustomUserInline(admin.StackedInline):
    model = CustomUser
    can_delete = False

class CustomUserAdmin(admin.ModelAdmin):
    def get_inline_instances(self, request, obj=None):
        return [inline(self.model, self.admin_site) for inline in [CustomUserInline]]
admin.site.register(CustomUser, CustomUserAdmin)

class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'last_name', 'first_name')
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)