Python Django&;MongoDB在django模型上存在默认ID自动字段问题
我有Django 2,其中使用了Rest框架和Djongo 可以创建帐户,但当我尝试查看要更新的已创建帐户列表或对其执行任何操作时,我实际上无法检索帐户列表,并且在ID字段上出现错误 我认为这是MongoDB的一个问题,那么如何解决这个问题呢 这是我的错误,后面是我的帐户相关代码 迁移错误位于/Accounts/account/ 身份证件 请求方法:获取 请求URL: Django版本:2.2.7 异常类型:MigrationError 异常值:Python Django&;MongoDB在django模型上存在默认ID自动字段问题,python,django,python-3.x,mongodb,djongo,Python,Django,Python 3.x,Mongodb,Djongo,我有Django 2,其中使用了Rest框架和Djongo 可以创建帐户,但当我尝试查看要更新的已创建帐户列表或对其执行任何操作时,我实际上无法检索帐户列表,并且在ID字段上出现错误 我认为这是MongoDB的一个问题,那么如何解决这个问题呢 这是我的错误,后面是我的帐户相关代码 迁移错误位于/Accounts/account/ 身份证件 请求方法:获取 请求URL: Django版本:2.2.7 异常类型:MigrationError 异常值: 身份证件 异常位置:C:\Users\PC 00
身份证件 异常位置:C:\Users\PC 001\AppData\Local\Programs\Python\Python38-32\lib\site packages\djongo\sql2mongo\query.py,在第287行的对齐结果中 Python可执行文件:C:\Users\PC 001\AppData\Local\Programs\Python\Python38-32\Python.exe Python版本:3.8.0 Python路径:
['E:\Project\accountingPy', 'C:\Users\PC' '001\AppData\Local\Programs\Python\Python38-32\Python38.zip', 'C:\Users\PC 001\AppData\Local\Programs\Python\Python38-32\DLLs', 'C:\Users\PC 001\AppData\Local\Programs\Python\Python38-32\lib', 'C:\Users\PC 001\AppData\Local\Programs\Python\Python38-32', 'C:\Users\PC 001\AppData\Roaming\Python\Python38\site packages', 'C:\Users\PC' '001\AppData\Local\Programs\Python\Python38-32\lib\site包'] 服务器时间:2020年4月6日星期一15:00:38+0000 存储在数据库中的记录
// 1
{
"_id": ObjectId("5e8b3a0c10fc9f40cdca44be"),
"label": "Mapping",
"owner": "Nasser",
"balance_currency": "USD",
"balance": "23.00",
"desc": "This the Cash account that manage by cash payments",
"status": true,
"created_at": ISODate("2020-04-06T14:17:48.838Z"),
"updated_at": ISODate("2020-04-06T14:17:48.838Z")
}
帐户模型
class Account(models.Model):
class Meta:
db_table = 'account'
def __str__(self):
return self.label
label = models.CharField(max_length=20,unique=True)
owner = models.CharField(max_length=20)
balance = MoneyField(max_digits=14, decimal_places=2,
default_currency='USD')
desc = models.CharField(max_length=200, blank=True)
status = models.BooleanField(default=1)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
帐户序列化程序
class AccountSerializer(serializers.ModelSerializer):
class Meta:
model = Account
fields = ['label', 'owner', 'balance',
'desc', 'status', 'created_at', 'updated_at']
网址
帐户视图集
class AccountViewSet(viewsets.ViewSet):
def list(self, request):
account = Account.objects.all()
serializer = AccountSerializer(account, many=True)
return JsonResponse(serializer.data, safe=False)
# return HttpResponse("List")
会计来源
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['label', 'owner', 'balance',
'desc', 'status']
基本解决方案 我在模型中添加了id字段none autoIncrement,问题已经解决 id=models.IntegerField(主键=True,唯一键=True) 但我认为这不是一个好的解决方案,因为Id不是自动递增的,每次我都需要检查最后一个Id以获得一个自动递增的Id字段。
如何在MongoDB中创建自动增量字段?我解决了删除数据库并重新生成迁移的问题,在创建ID字段的新数据库中,ID字段被添加到_ID旁边,并且是自动增量的,如果我在数据库中有任何重要数据,这不是一个好的解决方案,但对我来说很有用,因为我只是从头开始开发。是的,放下桌子并重新制作它们对我很有用。但是,肯定还有别的办法。我甚至不知道为什么会这样。我有过两次这样的问题。
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['label', 'owner', 'balance',
'desc', 'status']