2014-12-17 2 views
0

У меня есть класс контракта в моей модели. Контракт может быть связан с лицом или другим договором, который является расширенным контрактом предыдущего. Все хорошо до сих пор.Django: функция валидатора

class Contract(models.Model): 
    person = models.ForeignKey(Person) #person hired 
    contract = models.OneToOneField('self', blank = True, null = True) #allows to extend a contract 
    project = models.ForeignKey(Project, blank = True, null = True) #related project 

Так что, когда я хочу продлить контракт, я поставил имя человека и контракт поля показывает мне все контракты в базе данных. Мне нужно, чтобы, когда я ставил человека, полевой контракт показывает мне только контракты этого человека.

Любые предложения?

ответ

0

Чтобы получить доступ только контракт одного человека, вы можете:

либо сделать следующее в целях:

person = Person.objects.get(...) 
contracts = person.contract_set.all() 

или сделать это в шаблоне:

{% for contract in person.contract_set.all %} 
    {{ contract }}<br/> 
{% endfor %} 
+0

Я используя интерфейс администратора, следует добавить его в admin.py? – loar

+0

@Alex_Loar Я думаю, вы должны использовать ['TabularInline'] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.TabularInline) или [' StackedInline'] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.StackedInline) – xyres

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