這是我的models.pyDjango的IntegrityError:(1048, 「列user_ID的」不能爲空「)
class Cfituser(models.Model):
user = models.OneToOneField(User)
socialid = models.IntegerField(null=True)
accesstoken = models.CharField(max_length=255L, null = True)
class Meta:
db_table = 'CfitUser'
def __str__(self):
return "%s's profile" % self.user
@receiver(post_save, sender=User)
def create_cfituser(sender, instance, created, **kwargs):
if created:
Cfituser.objects.get_or_create(user=instance)
這是我的views.py
@api_view(['GET', 'POST'])
def users_create(request, format = None):
"""
List all users, or create a new user.
"""
if request.method == 'GET':
cfituser = Cfituser.objects.all()
serializer = CfituserSerializer(cfituser, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = CfituserSerializer(data=request.DATA)
if serializer.is_valid():
print serializer.data
user = User.objects.create_user(username = serializer.data['socialid'])
cfituser = Cfituser.objects.get(user = user)
cfituser.accesstoken = serializer.data['accesstoken']
cfituser.socialid = serializer.data['socialid']
cfituser.save()
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
每當有HTTP發佈請求後,我的數據庫表格按預期填充,但此錯誤不斷彈出。我嘗試了幾乎所有可用的解決方案,但我堅持這一點。
我試過user = models.OneToOneField(User, null = True)
,但是這導致我的數據庫表中有兩個條目,一個是user_id = NULL
,另一個是user_id = actualvalue
。
有關如何解決此問題的任何建議?
您的線路'cfituser = Cfituser.objects.get(user = user)cfituser.user = user'完全錯誤 – suhailvs
@suhail對不起cfit.user = user被註釋掉。這不是我的代碼的一部分。 – geekchic