2011-07-30 2 views
0



У меня есть 3 модели Django классы:

1. Заказчик - содержит несколько биллинг и адреса доставки

2. Адрес - может быть биллинг или адрес груза

3. Порядок - содержат ссылка на 1 клиента, 1 платежный адрес и 1 адрес доставки, выбранный клиентом.

Django модели отношений

Как создать класс Order, который будет отображаться на странице администратора, чтобы пользователи могли выбирать, какой адрес доставки использовать?

Класс Address имеет свойство, называемое именем, так что пользователь может назначать короткие имена, такие как «HQ» или «NY Branch». Я хочу, чтобы пользователи могли выбирать адрес доставки из раскрывающегося списка, используя короткие имена. Я медленный нуб.

UPDATE

КОД

Модель заказа:

class Order(models.Model): 
    customer = models.ForeignKey(Customer)   
    shipping_address = models.CharField(max_length=80)// Should be a drop list based on the customer above 
    ... 

модель Заказчик:

class Customer(models.Model) 
    name = models.CharField(max_length=80)  
    username = models.CharField(max_length=12) 
    password = models.CharField(max_length=12) 
    ... 

    def __unicode__(self): 
     return self.name 

Модель адреса:

class Address(models.Model): 
    name = models.CharField(max_length=80, help_text='Easy to remember name like "HQ"')  
    customer = models.ForeignKey(Customer) 
    address_type = models.CharField(max_length=12, choices=ADDRESS_TYPES,) 
    street_1 = models.CharField(max_length=100) 
    street_2 = models.CharField(max_length=100) 
    ... 

    def __unicode__(self): 
     return self.name 

Спасибо в продвинутом состоянии!

ответ

0

От the docs:

__unicode__ метод модели будет называться генерировать строковые представления объектов для использования в выборе месторождения ...

Так, override Address.__unicode__().

+0

Теоретически, я хочу сделать что-то подобное в моем классе заказа: 'address = models.OneToManyField (customer.Address.all()). Есть идеи? –

+0

Нет, вы не хотите этого делать. Вы хотите отношение «многие ко многим», иначе вы не сможете использовать адрес в нескольких заказах. –

0

Попробуйте взглянуть на эти вопросы:

How to work with dynamic data in Admin Panel?

django ForeignKey model filter in admin-area?

Я думаю, что они очень похожи на ваш вопрос. Все, что вам нужно, - установить варианты в admin.py из модели Address.

+0

Возможно, ваше решение может быть решением проблемы. Однако у меня возникают проблемы, потому что объект Order не имеет прямой связи с объектом Address. Мне нужна форма для отображения только имен адресов из объекта клиента, на который ссылается поле клиента в классе Order. –

+0

Если вы хотите сделать это с помощью стандартных инструментов Django, вы должны изменить поля на ManyToMany/ForeignKey. Если вы хотите использовать раскрывающееся меню автоматического выбора - посмотрите на django-ajax-select.В этом выпадающем меню появится способ создания пользовательской информации ... И это только автоматический вид виджета, который работал на меня. – Dracontis

Смежные вопросы