@Boldy

Как исправить bad request при создании модели в django?

При нажатии на плюсик возле foreign key открывается новое окно со следующим url: 127.0.0.1:8000/admin/address/address/add/?_to_fiel... а внутри bad request. Если убрать _to_field=id& или хотя бы id - форма нормально открывается.
models.py
# -*- coding: utf-8 -*-g
from __future__ import unicode_literals
from django.db import models


class Address(models.Model):
    country = models.CharField(verbose_name='Страна', max_length=40)
    district = models.CharField(verbose_name='Область', max_length=40)
    postal_code = models.CharField(verbose_name='Почтовый индекс', max_length=40)
    city = models.CharField(verbose_name='Город', max_length=40)
    street = models.CharField(verbose_name='Улица/Микрорайон', max_length=40)
    building_number = models.CharField(verbose_name='Дом', max_length=40)
    apartment = models.CharField(verbose_name='Квартира', max_length=40, blank=True)

    class Meta:
        db_table = 'addresses'

    def __str__(self):
        return self.id

admin.py
from django.contrib import admin
from models import Address

class AddressAdmin(admin.ModelAdmin):
    pass

admin.site.register(Address, AddressAdmin)


Модель с тем самым foreign key

class Client(models.Model):

    # при попытке добавить адрес через зелёный плюсик возле одного из этих полей - вылетает Bad Request 400
    passport_address = models.ForeignKey(Address, related_name='+')
    filter_address = models.ForeignKey(Address, null=True, blank=True, related_name='+')
  • Вопрос задан
  • 2460 просмотров
Решения вопроса 1
syschel
@syschel
freelance/python/django/backend
У вас related_name одноимённое. Сделайте два разных имени. Ибо на это должно тоже ругаться.
Вообще, по мимо Bad Request 400, в логе ошибки пишется ещё что-то, там должен быть ответ.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abukin
@abukin
Программирую на Python
Плюсик нужен для того чтобы не создавать обратной связи в модели а не для именования related_name.
Если связь нужна то лучше сделайте нормальное имя для неё человеческое.

# -*- coding: utf-8 -*-g - g надо убрать.

verbose_name='Город'
у всех именованных строк явно нужно определять юникод вот так:
verbose_name=u'Город'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы