Django DRF POST Changes not Persisting (сброс данных после обновления)

Недавно я работал с DRF, и на самом деле могу поделиться кое-чем удивительным :-

Я пытаюсь отправить запрос в конечную точку, которую я создал,

**views.py**
class SettingsAPI(APIView):
@classmethod
def post(self,request,pk):
    shop_token = request.session.get('shop_token') if request.session.get('shop_token') else ""
    shop_domain = request.session.get('shop_domain') if request.session.get('shop_domain') else ""
    store = Store.find_store_by_url(shop_domain)
    if not store:
        return JsonResponse({'status':'failed','msg':'invalid request'})
    data = json.loads(json.dumps(request.data))
    settings = get_object_or_404(Setting,pk=pk)
    serializer = SettingSerializer(settings, data = request.data)
    if serializer.is_valid():
        serializer.save()
    return JsonResponse({'status':'success'})
@classmethod
def get(self,request,pk):
    settings = get_object_or_404(Setting,pk=pk)
    if settings:
        serializer = SettingSerializer(settings)
        return JsonResponse({'status':'success','data':serializer.data})
    return JsonResponse({'status':'failed'})

**urls.py**
path('v1/page/settings/<int:pk>',SettingsAPI.as_view(),name='pagerud-settings-api'),

**serializer.py**
class SettingSerializer(serializers.ModelSerializer):
   class Meta:
     model = Setting
     fields = "__all__"

И я использую vue js, чтобы отправить запрос следующим образом.

      const settings_data = {
            
              "store": this.store.store_id,
              "header_background_color": `${this.settings.header_background_color}`,
              "header_font_color": `${this.settings.header_font_color}`,
              "page_background_color": `${this.settings.page_background_color}`,
              "card_background_color": `${this.settings.card_background_color}`,
              "card_font_color": `${this.settings.card_font_color}`,
              "header_message": `${this.settings.header_message}`,
              "header_message_optional": `${this.settings.header_message_optional}`,
              "button_background_color": `${this.settings.button_background_color}`,
              "button_font_color": `${this.settings.button_font_color}`

        }


 

models.py

class Setting(models.Model):

header_background_color = models.CharField(max_length=200,null=True,blank=True,default='#212529')
header_font_color = models.CharField(max_length=200,null=True,blank=True,default='white')
page_background_color = models.CharField(max_length=200,null=True,blank=True,default='white')
card_background_color = models.CharField(max_length=200,null=True,blank=True,default='whitesmoke')
card_font_color =  models.CharField(max_length=200,null=True,blank=True,default='white')
button_background_color = models.CharField(max_length=200,null=True,blank=True,default='#212529')
header_message = models.CharField(max_length=200,null=True,blank=True,default="""Hi, Add Your Greeting Message here""")
header_message_optional = models.CharField(max_length=200,null=True,blank=True , default="Thanks for purchasing the order")
button_font_color = models.CharField(max_length=200,null=True,blank=True,default='white')

store = models.OneToOneField(
    Store,
    on_delete=models.CASCADE,
    primary_key=True,
    related_name='settings'
)

def __str__(self) -> str:
    return self.store.store_name

Все работает хорошо, но есть одна загвоздка. Всякий раз, когда я пытаюсь сохранить объект в базе данных, он сохраняет его, а затем сбрасывает после обновления конечной точки. Я пробовал много других способов с общим APiView, но это тоже, похоже, не работает.

Может я что-то делаю не так?

Вернуться на верх