Найти - Пользователи
Полная версия: Один-ко-многим вообще есть такое в Django?
Начало » Django » Один-ко-многим вообще есть такое в Django?
1 2
quadright
Да… “_” никак не влияет, вчера где-то накосячил, в моей таблице были имена с “_” и не работало, создал тестовую без них и заработало. В моей таблице много всего, сейчас еще раз сделал и нормально всё завелось.

Теперь увидел что нормально всё работает, не понимал до этого.
>>> MyModel_Author.objects.filter(mymodel_book__name__iendswith='3')
[<MyModel_Author: Author 1>]
>>>
Благодарю!
Думал что при связи через ForeignKey связь в одну сторону устанавливается, только со стороны где этот самый ForeignKey есть.
quadright
Еще такой вопросик, у меня в модели (many-to-many) был метод (get_contract), который возвращал данные из подобъекта. Что-то типа такого:
class MyModel_Author(models.Model):
    name = models.CharField(max_length=254)
    book = models.ManyToManyField(mymodel_author_mymodel_book)
    def __unicode__(self):
        return self.name
    def get_contract(self):
        contract = self.book.first().contract_number
        return contract
class MyModel_Book(models.Model):
    name = models.CharField(max_length=254)
    contract_type = models.CharField(max_length=254)
    author = models.ForeignKey('MyModel_Author')
    def __unicode__(self):
        return u'{}: {}'.format(self.author.name, self.name)
А как при один-ко-многим такое в модели реализовать?
Пробывал
contract = self.mymodel_book.first().contract_number
И получил ‘object has no attribute’
GreyZmeem
Если вы хотите получить объекты которые ссылаются НА вас, то нужно использовать _set, имя поля - это имя модели в lower case
Т.е.:
def get_contract(self):
 return self.mymodel_book_set.first().contract_type
Также вы пытаетесь обратиться к contract_number, а в MyModel_Book у вас contract_type
Все же перечитайте внимательно ссылку которую я вам давал по releted objects - там все это описано
quadright
contract_number и contract_type - это прям на форуме код писал, в моей таблице другие имена. Затык был в _set, с _set'ом всё заработало, ага

Благодарю еще раз
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB