#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, я понял вашу точку зрения, и я изменил универсальный внешний ключ на обычный внешний ключ, теперь проблема решена, спасибо.