Не работает метод Post API в Django Rest Framework

Я новичок в DRF и пытаюсь создать четыре основных метода API для моей модели компании. GET, PUT и DELETE работают нормально. Однако у меня возникла проблема с POST. Когда я тестирую его с помощью Postman, он "как бы" сохраняет объект в базе данных, но с нулевыми значениями, а не с теми, которые я ввел. Единственные значения, которые он сохраняет не нулевыми, это ID (который сохраняется автоматически по умолчанию) и поле изображения, потому что я установил изображение по умолчанию. Я использую БД PostgreSQL, и ниже приведены мои models.py, serializers.py, views.py и urls.py.

models.py

`#Companies
#File Location Function
def upload_location(instance, filename, **kwargs):
    file_path = 'company/{company_name}-{filename}'.format(
                company_name = str(instance.name),
                filename     = filename
               )
    return file_path

class Companies(models.Model):
    STATUS = (
                ("Active",   "Active"),
                ("Inactive", "Inactive")
             )
    
    
    #Basic fields
    code           = models.CharField(max_length=30, unique=True, null=True, verbose_name="Company Code ")
    name           = models.CharField(max_length=100, unique=True, verbose_name='Company Name ', null=True)
    address        = models.CharField(max_length=100, unique=True, verbose_name='Address ', blank=True, null=True)
    city           = models.CharField(max_length=100, verbose_name='City ', blank=True, null=True)
    zip_code       = models.CharField(max_length=10, verbose_name='Zip Code ', blank=True, null=True)
    country        = models.CharField(max_length=100, verbose_name='Country ', blank=True, null=True)
    default_email  = models.CharField(max_length=100, unique=True, verbose_name='Default E-mail ', blank=True, null=True)
    default_phone  = models.CharField(max_length=100, unique=True, verbose_name='Default Phone Number ', blank=True, null=True)
    id_number      = models.IntegerField(unique=True, verbose_name='ID Number ', blank=True, null=True)
    tax_number     = models.IntegerField(unique=True, verbose_name='Tax Number ', blank=True, null=True)
   status         = models.CharField(max_length=20, null=True, choices=STATUS, verbose_name='Actvity Status ', help_text='Choose from a dropdown list. ', blank=True)         
    description    = RichTextField(blank=True, verbose_name='Company`s Activities ', null=True)
    image          = models.ImageField(default='default_company_image.jfif', upload_to=upload_location, blank=True, verbose_name='Company Image ', help_text='If not uploaded, the default company-image will be set. Not required field.', null=True)
    
    #Utility field
  date_created   = models.DateTimeField(auto_now_add=True, verbose_name="Date of Entry in DB")
  date_updated   = models.DateTimeField(auto_now=True, verbose_name="Date of Entry`s Update in DB")
  slug           = models.SlugField(blank=True, unique=False, verbose_name="URL Snippet ", help_text="Automatically Created.")
    
    class Meta:
        verbose_name        = 'Company'
        verbose_name_plural = 'Companies'
        
    #Object representation
    def __str__(self):
        return f'{self.name} in {self.country}'`

serializers.py

`#Companies Serializer
class CompaniesSerializer(serializers.ModelSerializer):
    class Meta:
        model  = Companies
        fields = '__all__'`

views.py

`#Create company object in DB through API
@api_view(['POST',]) 
def create_company(request):
    serializer = CompaniesSerializer(data=request.data)
    if request.method == "POST":
        if serializer.is_valid(raise_exception=True):
            company_saved = serializer.save()
        return Response({"success": "Company '{}' created successfully".format(company_saved.name)})`

urls.py

`urlpatterns = [
    ...
    path('create_company/', views.create_company, name="create_company"),
    ...  
]`

Вы должны сохранить request.method == "POST" перед сериализатором

@api_view(['POST']) 
def create_company(request):
    if request.method == "POST":
        serializer = CompaniesSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            company_saved = serializer.save()
        return Response({"success": "Company '{}' created successfully".format(company_saved.name)})`
Вернуться на верх