這是我的model.py
class AppointmentMaster(models.Model):
id = models.AutoField(primary_key=True)
user_key = models.CharField(max_length=30,blank=True,unique=True)
phone_number = models.CharField(max_length=20, blank=True, null=True)
email = models.CharField(max_length=20, blank=True, null=True)
@receiver(post_save, sender=AppointmentMaster)
def generate_AppointmentMaster_unique_key(sender, instance, created, **kwargs):
post_save.disconnect(generate_AppointmentMaster_unique_key, sender=MenstrualHistory)
instance.menstrual_history_n_key = "USER-{}".format(instance.id)
instance.save()
post_save.connect(generate_AppointmentMaster_unique_key, sender=AppointmentMaster)
我正在使用viewsets.ModelViewSet來獲取帖子詳細資訊。我想在從帖子 api 創建新行時自動保存 user_key。
我想要輸出像
{
"id":1,
"user_key":"USER-1",
"phone_number":"90000000",
"email":"[email protected]"
}
uj5u.com熱心網友回復:
您可以覆寫該.save()方法,該方法Model將在您update或create物件時自動執行此操作。
class AppointmentMaster(models.Model):
id = models.AutoField(primary_key=True)
user_key = models.CharField(max_length=30,blank=True,unique=True)
phone_number = models.CharField(max_length=20, blank=True, null=True)
email = models.CharField(max_length=20, blank=True, null=True)
def save(self, *args, **kwargs):
self.user_key = f"USER-{self.id}"
super(AppointmentMaster, self).save(*args, **kwargs)
uj5u.com熱心網友回復:
我不經常使用視圖集。如果您可以使用您的應用程式避開它們,這可能會奏效。我還建議使用每個模型實體附帶的 pk 而不是您的“id”欄位,我認為它具有類似的目的。
yourapp.views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def yourView(request):
if request.method == "POST":
data = request.POST
appt = AppointmentMaster()
appt.user_key = data.get('user_key')
appt.phone_number = data.get("phone_number")
appt.email = data.get("email")
appt.save()
return Response('id':appt.id, 'user_key':appt.user_key, 'phone_number':appt.phone_number, 'email':appt.email)
您可能需要包括一些額外的錯誤檢查,以確保正確保存實體,并可能從資料庫中查詢它,以便“appt.id”在回應中正常作業。這將需要您添加:
...
appt.save()
newAppt = AppointmentMaster.objects.get(user_key=data.get('user_key'))
然后將所有回應引數替換為“newAppt”而不是“appt”。希望這有幫助,我理解你的問題:D
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389615.html
上一篇:使用djangoimport_export匯入沒有id欄位作為主鍵的模型
下一篇:Django從表單上傳重定向
