Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django回归对MultipleChiceField不起作用?_Python_Django_Python 3.x_Django 1.10_Django Reversion - Fatal编程技术网

Python django回归对MultipleChiceField不起作用?

Python django回归对MultipleChiceField不起作用?,python,django,python-3.x,django-1.10,django-reversion,Python,Django,Python 3.x,Django 1.10,Django Reversion,我有一个带有多回声冰场的表单。它显示来自元组选项的数据。用户选择复选框,然后我使用所选数据在视图中创建新对象(在我的案例中是需求)。在我看来,当我尝试使用django反转时,它会引发错误。你知道为什么reversion.set\u user(request.user)和reversion.set\u comment('CREATE')不起作用吗 型号。py: @reversion.register() class Requirement(models.Model): code = mod

我有一个带有多回声冰场的表单。它显示来自元组选项的数据。用户选择复选框,然后我使用所选数据在视图中创建新对象(在我的案例中是需求)。在我看来,当我尝试使用django反转时,它会引发错误。你知道为什么
reversion.set\u user(request.user)
reversion.set\u comment('CREATE')
不起作用吗

型号。py:

@reversion.register()
class Requirement(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    symbol = models.CharField(_('Symbol'), max_length=250)
    name = models.CharField(_('Name'), max_length=250)
CHOICES = (
        ('A', 'Name A'),
        ('B', 'Name B'),
        ('C', 'Name C'),
)

class RequirementAddForm(forms.ModelForm):
    symbol = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)
@reversion.create_revision()
def _requirement_add(request):
    if request.method == 'POST':
        form = RequirementAddForm(request.POST)
        if form.is_valid():
            group_requirement_list = dict(CHOICES)     # {'C': 'Name C', 'A': 'Name A', 'B': 'Name B'}
            symbols = form.cleaned_data.get('symbol')  # Selected values: ['A', 'B', 'C']
            group_requirement = list_group_requirement_form.save(commit=False)
            for symbol in symbols:
                group_requirement.project = project
                group_requirement.symbol = symbol
                group_requirement.name = group_requirement_list[symbol]
                group_requirement.pk = None
                group_requirement.save()
                reversion.set_user(request.user)  # ???
                reversion.set_comment('CREATE')   # ???
Traceback (most recent call last):
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
    response = get_response(request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 296, in do_revision_context
    return func(*args, **kwargs)
  File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 603, in requirement_add
    requirement.save()
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 796, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 833, in save_base
    update_fields=update_fields, raw=raw, using=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\dispatch\dispatcher.py", line 191, in send
    response = receiver(signal=self, sender=sender, **named)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 302, in _post_save_receiver
    add_to_revision(instance, model_db=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 212, in add_to_revision
    _add_to_revision(obj, db, model_db, True)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 193, in _add_to_revision
    object_repr=force_text(obj),
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\encoding.py", line 76, in force_text
    s = six.text_type(s)
TypeError: __str__ returned non-string (type __proxy__)
[26/Apr/2017 13:17:43] "POST /ru/account/dashboard/projects/cdecbd12-80d3-4ecd-9c08-8edef5d7f850/requirement_add/ HTTP/1.1" 500 18847
forms.py:

@reversion.register()
class Requirement(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    symbol = models.CharField(_('Symbol'), max_length=250)
    name = models.CharField(_('Name'), max_length=250)
CHOICES = (
        ('A', 'Name A'),
        ('B', 'Name B'),
        ('C', 'Name C'),
)

class RequirementAddForm(forms.ModelForm):
    symbol = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)
@reversion.create_revision()
def _requirement_add(request):
    if request.method == 'POST':
        form = RequirementAddForm(request.POST)
        if form.is_valid():
            group_requirement_list = dict(CHOICES)     # {'C': 'Name C', 'A': 'Name A', 'B': 'Name B'}
            symbols = form.cleaned_data.get('symbol')  # Selected values: ['A', 'B', 'C']
            group_requirement = list_group_requirement_form.save(commit=False)
            for symbol in symbols:
                group_requirement.project = project
                group_requirement.symbol = symbol
                group_requirement.name = group_requirement_list[symbol]
                group_requirement.pk = None
                group_requirement.save()
                reversion.set_user(request.user)  # ???
                reversion.set_comment('CREATE')   # ???
Traceback (most recent call last):
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
    response = get_response(request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 296, in do_revision_context
    return func(*args, **kwargs)
  File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 603, in requirement_add
    requirement.save()
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 796, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 833, in save_base
    update_fields=update_fields, raw=raw, using=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\dispatch\dispatcher.py", line 191, in send
    response = receiver(signal=self, sender=sender, **named)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 302, in _post_save_receiver
    add_to_revision(instance, model_db=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 212, in add_to_revision
    _add_to_revision(obj, db, model_db, True)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 193, in _add_to_revision
    object_repr=force_text(obj),
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\encoding.py", line 76, in force_text
    s = six.text_type(s)
TypeError: __str__ returned non-string (type __proxy__)
[26/Apr/2017 13:17:43] "POST /ru/account/dashboard/projects/cdecbd12-80d3-4ecd-9c08-8edef5d7f850/requirement_add/ HTTP/1.1" 500 18847
view.py:

@reversion.register()
class Requirement(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    symbol = models.CharField(_('Symbol'), max_length=250)
    name = models.CharField(_('Name'), max_length=250)
CHOICES = (
        ('A', 'Name A'),
        ('B', 'Name B'),
        ('C', 'Name C'),
)

class RequirementAddForm(forms.ModelForm):
    symbol = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)
@reversion.create_revision()
def _requirement_add(request):
    if request.method == 'POST':
        form = RequirementAddForm(request.POST)
        if form.is_valid():
            group_requirement_list = dict(CHOICES)     # {'C': 'Name C', 'A': 'Name A', 'B': 'Name B'}
            symbols = form.cleaned_data.get('symbol')  # Selected values: ['A', 'B', 'C']
            group_requirement = list_group_requirement_form.save(commit=False)
            for symbol in symbols:
                group_requirement.project = project
                group_requirement.symbol = symbol
                group_requirement.name = group_requirement_list[symbol]
                group_requirement.pk = None
                group_requirement.save()
                reversion.set_user(request.user)  # ???
                reversion.set_comment('CREATE')   # ???
Traceback (most recent call last):
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
    response = get_response(request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 296, in do_revision_context
    return func(*args, **kwargs)
  File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 603, in requirement_add
    requirement.save()
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 796, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 833, in save_base
    update_fields=update_fields, raw=raw, using=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\dispatch\dispatcher.py", line 191, in send
    response = receiver(signal=self, sender=sender, **named)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 302, in _post_save_receiver
    add_to_revision(instance, model_db=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 212, in add_to_revision
    _add_to_revision(obj, db, model_db, True)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 193, in _add_to_revision
    object_repr=force_text(obj),
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\encoding.py", line 76, in force_text
    s = six.text_type(s)
TypeError: __str__ returned non-string (type __proxy__)
[26/Apr/2017 13:17:43] "POST /ru/account/dashboard/projects/cdecbd12-80d3-4ecd-9c08-8edef5d7f850/requirement_add/ HTTP/1.1" 500 18847
错误:

@reversion.register()
class Requirement(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    symbol = models.CharField(_('Symbol'), max_length=250)
    name = models.CharField(_('Name'), max_length=250)
CHOICES = (
        ('A', 'Name A'),
        ('B', 'Name B'),
        ('C', 'Name C'),
)

class RequirementAddForm(forms.ModelForm):
    symbol = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)
@reversion.create_revision()
def _requirement_add(request):
    if request.method == 'POST':
        form = RequirementAddForm(request.POST)
        if form.is_valid():
            group_requirement_list = dict(CHOICES)     # {'C': 'Name C', 'A': 'Name A', 'B': 'Name B'}
            symbols = form.cleaned_data.get('symbol')  # Selected values: ['A', 'B', 'C']
            group_requirement = list_group_requirement_form.save(commit=False)
            for symbol in symbols:
                group_requirement.project = project
                group_requirement.symbol = symbol
                group_requirement.name = group_requirement_list[symbol]
                group_requirement.pk = None
                group_requirement.save()
                reversion.set_user(request.user)  # ???
                reversion.set_comment('CREATE')   # ???
Traceback (most recent call last):
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
    response = get_response(request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 296, in do_revision_context
    return func(*args, **kwargs)
  File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 603, in requirement_add
    requirement.save()
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 796, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\base.py", line 833, in save_base
    update_fields=update_fields, raw=raw, using=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\dispatch\dispatcher.py", line 191, in send
    response = receiver(signal=self, sender=sender, **named)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 302, in _post_save_receiver
    add_to_revision(instance, model_db=using)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 212, in add_to_revision
    _add_to_revision(obj, db, model_db, True)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 193, in _add_to_revision
    object_repr=force_text(obj),
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\encoding.py", line 76, in force_text
    s = six.text_type(s)
TypeError: __str__ returned non-string (type __proxy__)
[26/Apr/2017 13:17:43] "POST /ru/account/dashboard/projects/cdecbd12-80d3-4ecd-9c08-8edef5d7f850/requirement_add/ HTTP/1.1" 500 18847

最后,我发现了问题所在。在我的语气中,我使用:

def __str__(self):
   return self.name

移除django后,恢复工作正常

如果不想完全删除它,可以尝试将其更改为
return str(self.name)