2013-07-08 2 views
2

저는 django를 처음 사용합니다. 추가 뉴스,ModelChoiceField 및 템플릿

class Category(models.Model): 
    category = models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.category 

class Tag(models.Model): 
    tag = models.CharField(max_length=30, blank=True) 


    def __unicode__(self): 
     return self.tag 

class News(models.Model): 
    title = models.CharField(max_length=80) 
    category = models.ForeignKey(Category) 
    author = models.ForeignKey(User) 
    news_body = models.CharField(max_length=5000) 
    pub_date = models.DateField(default = datetime.datetime.now()) 
    tags = models.ManyToManyField(Tag, blank=True) 

    def __unicode__(self): 
     return self.title 

및 양식 : 나는 그런 모델을 가지고

class AddNewsForm(ModelForm): 
    class Meta(): 
     model = News 

내가 템플릿 ModelChoiceField 표현에 문제가 있습니다. 그래서 같은 <select>/<option> 태그 사용하려면 :

<select id="id_category" name="category"> 
<option value="" selected="selected">---------</option> 
{% for cat in form.category %} 
<option>{{cat}}</option> 
{% endfor %} 
</select> 

을하지만 그것은 작동하지 않습니다이다. 카테고리 필드 선택을 (반복 할) 선택하려면 어떻게해야합니까? 쉬운 질문이지만 혼란스럽고 작동하는 해결책을 찾을 수 없습니다.

{{form.as_p}}로는 잘 작동하지만 작성자 입력란 (작성자 - 로그인 사용자)을 숨겨야합니다.

답변

1

양식에서 author

class AddNewsForm(ModelForm): 
    class Meta: 
     model = News 
     exclude = ('author',) 

과 전망에있을 것 숨을 청소 방법 :

@login_required 
def myView(request): 
    #some code here 
    if request.POST: 
     form = AddNewsForm(request.POST) 
     if form.is_valid(): 
      news = form.save(commit=False) 
      news.author = request.user 
      news.save() 

    #rest of the code 

및 템플릿이 기본 방법을로드 할 수 {{ form.as_p }}

관련 문제