0

TagStatus オブジェクトを保存しようとしています。現在、保存していますが、ユーザー名は保存されておらず、タグの外部キーも保存されていません。

現在の節約は次のとおりです。

user : __________ (empty) 
status : Status 2 
tag : _________ (empty)

私は何を間違っていますか?ユーザー名またはタグが保存されないのはなぜですか? よろしくお願いいたします。

モデル:

class TagStatus(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)
    status = models.CharField(max_length=2, choices=tag_statuses)
    tag = models.ForeignKey(Tag, null=True, blank=True)

    def __unicode__(self):
        return self.status

    def save(self, *args, **kwargs):
        super(TagStatus, self).save(*args, **kwargs)

私の見解:

@login_required
def tags(request):
    all_tags = Tag.objects.all()
    context = base_context(request)
    if request.method == 'POST':
        if 'status_check' in request.POST:
            status = int(request.POST['select'])
            tag = request.POST['tag']
            user = request.user
            try:
                tag_status = TagStatus.objects.get_or_create(status=status, tag__slug=tag, user__username=user.username)
            except TagStatus.DoesNotExist:
                tag_status = None
            response = simplejson.dumps({"status": "Successfully changed status"})
        else:
            response = simplejson.dumps({"status": "Error"})
            return HttpResponse (response, mimetype='application/json')
    status_form = TagStatusForm()
    context['all_tags'] = all_tags
    return render_to_response('tags/tags.html', context, context_instance=RequestContext(request))

テンプレート:

<form class="nice" id="status-form" method="POST" action="">
     {% csrf_token %}
     <input type="hidden" name="status_check" />
     <input type='hidden' name="tag" value="{{ tag.slug }}" />
     <select name="select" id="positionSelect" class="input-text category" onchange="this.form.submit()">
          <option name="all" value="0">Your Status</option>
          <option name="investing" value="1">Status 1</option>
          <option name="selling" value="2">Status 2</option>
          <option name="interested" value="3">Status 3</option>
     </select>
</form>
4

4 に答える 4

0

コードの何が問題なのか正確にはわかりませんが、これはあなたがすべきことではありません。Django フォームは、フォームの作成、投稿データから Python データへの変換、モデルの保存など、すべてを自動的に処理します。彼らはまた、あなたが自分でどうやってやればいいのか分からないことを本当に本当に助けてくれる多くの検証を行います.

Django フォームのドキュメントを参照してください: https://docs.djangoproject.com/en/dev/topics/forms/

于 2013-04-04T18:00:30.007 に答える