форма не отображается несмотря на то, что она вложена в модель компании - PullRequest
0 голосов
/ 15 сентября 2018

Вариант использования приложения, которое я пытаюсь разработать, касается регистрации компании, которая заинтересована в франшизе.Я взял эту концепцию от franchisebazar для целей обучения.Там я увидел информацию о компании, информацию о бренде и бизнес-модель для регистрации компании.Вот почему я создал следующую модель.Я хочу, чтобы теперь создавались и обновлялись представления, чтобы из внешнего интерфейса я мог нажать на запрос API для создания и обновления.Я разработал следующие serializer и APIView.Однако, когда я пытаюсь проверить в браузере, работает ли закодированный способ или нет, я не смог увидеть форму для бренда и бизнес-модели, несмотря на то, что они вложены в компанию.Таким образом, я хочу знать, нужно ли мне расширять его, создавая представление для бренда и бизнес-модели по отдельности, или я сделал что-то не так в своем коде.

class Company(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    name = models.CharField(max_length=150, blank=False, null=False)
    phone_number = models.CharField(max_length=15, blank=False, null=False)


class Brand(models.Model):

    company = models.ForeignKey(Company, related_name='company_brand', on_delete=models.CASCADE)
    name = models.CharField(max_length=150, blank=False, null=False)
    website = models.URLField()
    description = models.TextField(blank=False)


class BusinessModel(models.Model):


    company = models.ForeignKey(Company, related_name='company_business_model', on_delete=models.CASCADE)
    industry = models.ForeignKey(Industry, null=True, related_name='industry', on_delete=models.SET_NULL)
    segments = models.ForeignKey(Segment, on_delete=models.SET_NULL, null=True)
    total_investment = models.CharField(max_length=50, choices=TOTAL_INVESTMENT, default=None)

    def __str__(self):
        return self.company.name


class CompanyView(views.APIView):

    serializer_class = CompanySerializer

    def get(self, request, pk=None, format=None):
        reply = {}
        try:
            companies = Company.objects.all()
            if pk:
                company = companies.get(pk=pk)
                reply['data'] = self.serializer_class(company).data
            reply['data'] = self.serializer_class(companies, many=True).data
        except Company.DoesNotExist:
            reply['data'] = []
        return Response(reply, status.HTTP_200_OK)


    def post(self, request, pk=None, format=None):
        reply = {}
        company={}
        if pk is not None:
            try:
                company = Company.object.get(pk=pk)
            except Company.DoesNotExist:
                return error.RequestedResourceNotFound().as_response()
        serialized_data = self.serializer_class(instance=company, data=request.data, partial=True)
        if serialized_data.is_valid():
            serialized_data.save(owner=request.user)
        else:
            return error.ValidationError(serialized_data.errors).as_response()
        reply['data'] = serialized_data.data
        return Response(reply, status.HTTP_200_OK)


class CompanySerializer(serializers.ModelSerializer):

    company_brand = BrandSerializer(many=True)
    company_business_model = BusinessModelSerializer(many=True)

    class Meta:

        model = Company
        fields = '__all__'

1 Ответ

0 голосов
/ 15 сентября 2018

Одна из причин, по которой вы не видите форму, которая позволяет обновлять экземпляры бренда и бизнес-модели, заключается в том, что поведение сериализатора модели по умолчанию не позволяет вам этого делать.Вам нужно написать свой собственный метод обновления в сериализаторе, чтобы сохранить изменения, внесенные в бренд и бизнес-экземпляры.

...