Использование def __ unicode __ (self):

Использовал Джанго 1.9. У меня есть две модели, связанные между собой, один содержит один пойдите и имя между другими признаками и другой содержит Вашего собственного пойдите вместе с id первой модели:

class Televisor(models.Model):
    idTelevisor = models.AutoField(primary_key=True)
    marca = models.CharField(max_length=45, null=False)
    modelo = models.CharField(max_length=45, null=False)
    ...

class Falla(model.Models):
    idFalla = models.AutoField(primary_key=True)
    idTelevisor = ForeignKey(Televisor)
    ...

Однако, в admin django я хотел бы, чтобы для второй модели, имена объектов вышли используя признаки, содержавшие в первой модели. Вещь, которая я была невозможна реализовывать с синтаксисом, который я опишу после, так как у меня выходит ошибка ObjectHasNoAttribute.

В этом случае, каков синтаксис? Например, у меня есть эта синтаксис, но который вызывает ошибки, из-за того, что признаки не существуют во второй модели:

def __unicode__(self):
    return '{} {} {}'.format(self.televisor.Marca, self.televisor.Modelo, self.televisor.VarianteModelo)

Привет и спасибо заранее

3
задан 28.11.2018, 09:22
3 ответа

В конце концов не было необходимо описывать asГ - признаки, которые querГ, - которому покажут как имя в admin Джанго, sГіlo было достаточно размещать id, что оказывалась ForeignKey:

class Falla(models.Model):
   ...

    def __unicode__(self):
      return '{}'.format(self.idTelevisor)
2
ответ дан 03.12.2019, 23:06

Я это не понимаю очень хорошо в id, но podrГ-эксперт связывать модели следующей формы, такой данности как пример:

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name  = models.CharField(max_length=30)

    def __unicode__():
        return '{} {}'.format(self.first_name, self.last_name)


class Gender(models.Model):
    author = models.ForeignKey(Author)
    book  = models.CharField(max_length=30)

    def __unicode__():
         return '{}'.format(self.book)

Потом изменять модуль admin.py для aГ±adir в твой интерфейс administraciГіn.

from django.contrib import admin
from .models import Register, User, Author, Gender
# Register your models here.

admin.site.register(Register)
admin.site.register(User)
admin.site.register(Author)
admin.site.register(Gender)

Я думаю, что с этим ты можешь связывать модель 1 с моделью 2, и можешь проверять в твоем интерфейсе администратора, как создается она relaciГіn, наполнив поля.

1
ответ дан 03.12.2019, 23:06

В действительности ты не нуждаешься в том, чтобы определить таким образом твой первичный ключ, так как Джанго делает точно автоматическую форму. А именно, ты можешь препятствовать первому полю:

class Televisor(models.Model):
    marca = models.CharField(max_length=45, null=False)
    modelo = models.CharField(max_length=45, null=False)
    ...

С другой стороны, ошибка, о которой ты упоминаешь, проистекает того, что в твоей модели у тебя нет никакого названного поля televisor. Правильное имя, как уже ты открыл, он idTelevisor.

В конце концов, путеводитель стиля Джанго рекомендует, чтобы ты использовал только мелкие в именах твоих полей, из-за которого модель Falla это оказалось бы так:

class Falla(model.Models):
    televisor = ForeignKey(Televisor)
    ...
1
ответ дан 03.12.2019, 23:06

Теги

Похожие вопросы