Проблема с использованием ArrayReferenceField с djongo и django - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь создать приложение с django, используя djongo для связи с mongodb.У меня есть следующая модель:

from djongo import models
from django import forms

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    class Meta:
        abstract = True

class BlogForm(forms.ModelForm):
    class Meta:
        model = Blog
        fields = (
            '__all__'
        )

class MetaData(models.Model):
    # pub_date = models.DateField()
    # mod_date = models.DateField()
    n_pingbacks = models.CharField(max_length=255)
    rating = models.CharField(max_length=255)

    class Meta:
        abstract = True

class MetaDataForm(forms.ModelForm):
    class Meta:
        model = MetaData
        fields = (
            '__all__'
        )

class Author(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()

    def __str__(self):
        return self.name

class AuthorForm(forms.ModelForm):
    class Meta:
        model = Author
        fields = (
            'name', 'email'
        )

class Entry(models.Model):
    blog = models.EmbeddedModelField(
        model_container=Blog,
        model_form_class=BlogForm
    )
    meta_data = models.EmbeddedModelField(
        model_container=MetaData,
        model_form_class=MetaDataForm
    )

    headline = models.CharField(max_length=255)
    body_text = models.TextField()

    authors = models.ArrayReferenceField(
        to=Author,
        on_delete=models.CASCADE,
    )
    n_comments = models.CharField(max_length=255)

    def __str__(self):
        return self.headline

Но когда я использую администратор django для создания новой записи, я получаю сообщение об ошибке:

TypeError в / admin / app /Аргумент entry / add / int () должен быть строкой, байтовоподобным объектом или числом, не «установленным». Метод запроса: URL-адрес запроса POST: http://localhost:8000/admin/app/entry/add/ Версия Django: 2.1.3 Тип исключения: Исключение TypeErrorЗначение: аргумент int () должен быть строкой, байтовоподобным объектом или числом, а не «заданным» исключением. Расположение: C: \ Users \ scg \ Documents \ Rest_project \ envschool \ lib \ site-packages \ django \ db \models \ fields__init __. py в get_prep_value, строка 965 Исполняемый файл Python: C: \ Users \ scg \ Documents \ Rest_project \ envschool \ Scripts \ python.exe Версия Python: 3.7.1 Путь Python:
['C: \ Users \scg \ Documents \ Rest_project \ djongoproj2 ',' C: \ Users \ scg \ Documents \ Rest_project \ envschool \ Scripts \ python37.zip ',' C: \ Users \ scg \ AppData \ Local \ Programs \ Python \ Python37-32 \Библиотеки DLL ',' C: \ Users \ scg \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib ',' C: \ Users \ scg \ AppData \ Local \ Programs\ Python \ Python37-32 ',' C: \ Users \ scg \ Documents \ Rest_project \ envschool ',' C: \ Users \ scg \ Documents \ Rest_project \ envschool \ lib \ site-packages ']

Пожалуйста, как я могу решить эту проблему.

Я использую django 2.1.3 и djongo 1.2.30

1 Ответ

0 голосов
/ 09 мая 2019

У меня была похожая проблема.Я решил это путем понижения до Django 2.0.

...