выберите связанный в Django

Самый простой способ:

#outer {
  width: 100%;
  text-align: center;
}
#inner {
  margin: auto;
  width: 200px;
}
<div id="outer">
  <div id="inner">Blabla</div>
</div>

0
задан dataviews 13 July 2018 в 17:35
поделиться

1 ответ

На основе подробного разговора, чтобы очистить несколько деталей. Вот ответ.

Вам нужно внести небольшие изменения в свои модели, так как было довольно сложно понять, чего вы хотите достичь.

Модели:

class ManufacturerName(models.Model):
    name_id = models.AutoField(primary_key=True)
    company_name = models.CharField(unique=True, max_length=50)

    class Meta:
        managed = False
        db_table = 'manufacturer_name'


class CarBuild(models.Model):
    car_id = models.AutoField(primary_key=True)
    car_icon = models.CharField(max_length=150, blank=True, null=True)
    manufacturer = models.ForeignKey(ManufacturerName,on_delete=models.SET_NULL) 

    class Meta:
          managed = False
          db_table = 'car_build'


class CarList(models.Model):
    list_id = models.AutoField(primary_key=True)
    car = models.ForeignKey(CarBuild, on_delete=models.DO_NOTHING)
    title = models.CharField(unique=True, max_length=100)
    description = models.TextField()

    class Meta:
       managed = False
       db_table = 'cars'

И тогда вам нужно настроить сериализаторы.

class CarListSerialiser(serializers.HyperlinkedModelSerializer):

    company_name= serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = CarList
        fields =  ('list_id', 'company_name', 'title')

    def get_company_name(self, obj):
        return obj.car.manufacturer.company_name

И вы используете его в своем представлении:

class CarListViewSet(viewsets.ModelViewSet):
    queryset = CarList.object.all()
    serializer_class = CarListSerialiser
1
ответ дан Enthusiast Martin 17 August 2018 в 12:21
поделиться
  • 1
    где второй вариант? – dataviews 13 July 2018 в 19:35
  • 2
    у вас есть оба, один - имя_компании_1, а второй - company_name_2 – Enthusiast Martin 13 July 2018 в 19:58
  • 3
    это решение не сработало – dataviews 13 July 2018 в 20:00
  • 4
    Чтобы подтвердить, я пытаюсь показать, что текст хранится в таблице первичных ключей в company_name. Эквивалент SQL будет внутренним соединением – dataviews 13 July 2018 в 20:01
  • 5
    вы просто хотите отобразить ID? Я думаю, что вы хотите увидеть имя company_name из модели ManufacturerName, нет? – Enthusiast Martin 13 July 2018 в 20:02
Другие вопросы по тегам:

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