У меня Django 2, что в нем используется Rest Framework и Djon go.
Учетная запись может быть создана, но когда я пытаюсь увидеть список созданных Учетных записей, чтобы обновить или сделать любую Я не могу получить список учетных записей и выдает ошибку в поле идентификатора.
Я думаю, что это проблема с MongoDB, так как я могу решить эту проблему?
Вот ошибка, за которой следуют коды, связанные с моей учетной записью
MigrationError в / Accounts / account / id Метод запроса: GET URL запроса: http://localhost: 8000 / Accounts / account / Django Версия: 2.2.7 Тип исключения: MigrationError Значение исключения:
id Место исключения: C: \ Users \ P C 001 \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ djongo \ sql2mongo \ query.py в _align_results, строка 287 Python Исполняемый файл: C: \ Users \ P C 001 \ AppData \ Local \ Programs \ Python \ Python38 -32 \ python .exe Python Версия: 3.8.0 Python Путь:
['E: \ Project \ accountingPy', '* 10 57 *: \ Users \ P C '' 001 \ AppData \ Local \ Programs \ Python \ Python38-32 \ python38.zip ',' C: \ Users \ P C 001 \ AppData \ Local \ Programs \ Python \ Python38-32 \ DLLs ',' C: \ Users \ P C 001 \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib ',' C: \ Users \ P C 001 \ AppData \ Local \ Programs \ Python \ Python38-32 ',' C: \ Users \ P C 001 \ AppData \ Roaming \ Python \ Python38 \ site-packages ',' C: \ Users \ P C '' 001 \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages '] Время сервера: понедельник, 6 апреля 2020 года 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']
URL
router = DefaultRouter()
router.register(r'', AccountViewSet, basename='account')
urlpatterns = router.urls
Учетная запись Set
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")
AccountFrom
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['label', 'owner', 'balance',
'desc', 'status']
Basi c Решение Я добавляю поле id none autoIncrement в модели и проблема была исправлена.
id = models.IntegerField (primary_key = True, unique = True)
Но я думаю, что это не очень хорошее решение, поскольку Id - это не Автоинкремент, и каждый раз, когда мне нужно проверить последний Id иметь поле идентификатора автоинкремента. Как я могу создать поле автоматического увеличения в MongoDB?