Общее отношение в Django rest

#django #django-models #django-rest-framework #django-views #django-generic-relations

#django #django-модели #django-rest-framework #django-представления #django-generic-relations

Вопрос:

Проблема

Я хочу создать Student с адресом. Как я могу написать REST API в Django для того же.

Адрес и студент

 class Address(models.Model):
    address = models.CharField(max_length=100, null=False, blank=False)
    land_mark = models.CharField(max_length=100, null=True, blank=True)
    city = models.CharField(max_length=100, null=True, blank=True)
    state = models.CharField(max_length=100, null=True, blank=True)
    pin_code = models.CharField(max_length=100, null=True, blank=True)
    latitude = models.FloatField(default=0.0)
    longitude = models.FloatField(default=0.0)
    geo_code = models.CharField(max_length=100, null=True, blank=True)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, 
                                    null=True)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

 class Student(models.Model):
    name = model.CharField(max_length=100, null=False, blank=False)
    address = GenericRelation(Address)
    def __str__(self):
        return self.name
  

Сериализаторы

 class AddressSerializer(serializers.ModelSerializer):
    class Meta:
        model = Address
        fields = "__all__"


 class StuddentSerializer(serializers.ModelSerializer):
       class Meta:
            model = Student
            fields = "__all__"
  

Представление API

 class AddressApiView(ListCreateAPIView):
    queryset = Address.objects.all()
    serializer_class = AddressSerializer

 class StudentApiView(ListCreateAPIView):
    queryset = Student.objects.all()
    serializer_class = StuddentSerializer
  

Как мне получить моего ученика для создания / просмотра?

Ответ №1:

Вы можете попробовать с помощью rest-framework-generic-relation ссылки на стороннее приложение

Комментарии:

1. да, я пытался, но я хочу создать api для student не по адресу, как указано в = github.com/Ian-Foote/rest-framework-generic-relations например, я хочу создать книгу или заметки, а не теги

2. @GauravBole извини, приятель, я не совсем понял твою точку зрения. У меня есть намерение, что вы можете искать moneyTomoney или foreignkey связь между этими моделями, а не общее отношение. Поскольку в модели Student отсутствует множественный внешний ключ, что вы намерены делать с этим общим отношением.

3. я прав, @ shakil, я понял вашу точку зрения, и я изменил универсальный внешний ключ на обычный внешний ключ, теперь проблема решена, спасибо.