【问题标题】:Save user's id in the database, when submitting the form in django在 django 中提交表单时,将用户的 id 保存在数据库中
【发布时间】:2017-01-20 14:47:31
【问题描述】:

我有一个表单,用户可以添加他的提要 URL,然后查看他之前提交的提要的文章。 如何更改我的代码以保存提要的所有者(将提要提交到网站的用户)?

models.py:

from django.db import models
from django.contrib.auth.models import User

class Feed(models.Model):
    user = models.ManyToManyField(User)
    category = models.ManyToManyField(Category)
    title = models.CharField(max_length=200)
    url = models.URLField()
    is_active = models.BooleanField(default=False)

    def __unicode__(self):
    return self.title

class Article(models.Model):
    feed = models.ForeignKey(Feed)
    title = models.CharField(max_length=200)
    url = models.URLField()
    description = models.TextField()
    publication_date = models.DateTimeField()

def __unicode__(self):
    return self.title

views.py:

from .models import Article, Feed
from django.http import HttpResponse
from .forms import FeedForm

def new_feed(request):
if request.method == "POST":
    form = FeedForm(request.POST)
    if form.is_valid():
        feed = form.save(commit=False)

        existingFeed = Feed.objects.filter(url=feed.url)
        if len(existingFeed)==0:
            feedData = feedparser.parse(feed.url)

            feed.title = feedData.feed.title
            feed.save()

            for entry in feedData.entries:
                article = Article()
                article.title = entry.title
                article.url = entry.link
                article.description = entry.description

                d = datetime.datetime(*(entry.published_parsed[0:6]))
                dateString = d.strftime('%Y-%m-%d %H:%M:%S')

                article.publication_date = dateString
                article.feed = feed
                article.save()

        return redirect(feeds_list)
else:
    form = FeedForm()
return render(request, 'news/new_feed.html', {'form': form})

forms.py

from django import forms
from .models import Feed

class FeedForm(forms.ModelForm):
    class Meta:
        model = Feed
        fields = ('url',)

添加新提要后,使用此表单: (提要,没有任何所有者(用户))

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    试试这个

    feed.save()
    feed.user.add(*[request.user]) #try request.user.id also
    

    【讨论】:

    • 现在我收到了这个错误:'User' object is not iterable @itzmeontv
    • 现在unhashable type: 'list' feed.user.add([request.user]) 出错
    • 也试试这个feed.user.add(*[request.user])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2012-07-16
    • 2021-04-26
    • 2021-01-01
    • 2018-03-16
    相关资源
    最近更新 更多