2017-03-13 7 views
0

私はDjangoの新機能で、プロジェクトを開発しています。ユーザーに入力を公開するかどうかの選択肢を与えようとしています。彼らは創造する。私は私のモデルを変更して、ユーザーに選択肢を与え、私のフォームに変更する必要があるものがあれば(おそらくform.pyともしそうなら、私はフィールドとして何をしたいのでしょうか) ?また、私の機能を変えるためには何が必要ですか?Django - 公開または私的入力のためのオプション

これはそれのための私の現在のモデルである:

class Topic(models.Model): 
    """A topic the user is learning about""" 
    text = models.CharField(max_length=200) 
    date_added = models.DateTimeField(auto_now_add=True) 
    owner = models.ForeignKey(User) 

    def __str__(self): 
     """Return a string representation of the model.""" 
     return self.text 

そして、ここではforms.pyです:

def topics(request): 
    """Show all topics.""" 
    topics = Topic.objects.filter(owner=request.user).order_by('date_added') 
    context = {'topics': topics} 
    return render(request, 'learning_logs/topics.html', context) 

from django import forms 

from .models import Topic, Entry 

class TopicForm(forms.ModelForm): 
    class Meta: 
     model = Topic 
     fields = ['text'] 
     labels = {'text': ''} 

class EntryForm(forms.ModelForm): 
    class Meta: 
     model = Entry 
     fields = ['text'] 
     labels = {'text': ''} 
     widgets = {'text': forms.Textarea(attrs={'cols': 80})} 

これはそれのための私の関数は次のようになりますありがとう
ミロ

答えて

0

あなたは、現時点では、彼らが唯一の彼らが作成したものを見ることができるように私は、ユーザーが自分の入力がパブリックまたは ない作るの選択肢を提供しようとしています

を言っています。

あなたの説明が正しい場合、そのトピックが公開されているかどうかを簡単に選択できるようにするには、BooleanFieldをモデルに入れ、フォームにチェックボックスを入れます。だから、ユーザーがチェックボックスをチェックすると、公開されるかどうか(逆にしたい場合)。

しかし、ユーザーがパブリックであることを確認しても、クエリをフィルタリングする必要があります。 私はTopic.objects.filter(owner=request.user.pk)を持っています。

あなたはまだ、これはすべてのユーザーがすべてのユーザーからパブリックとしてチェックされてきたものを見るであろうことを意味するTopic.objects.filter(checked=true)

ようなものが必要でしょう。

2つのクエリが必要なのかもしれません。 1つは、ユーザーが作成したものを表示するものと、チェックされたものを表示するものです。

+0

チェックボックスのコードがどのようなものかはわかりませんが、これは非常に役に立ちますが、 –

+0

チェックボックスのコードはどういう意味ですか? –

関連する問題