2017-09-13 71 views
0

我的模型看起來是這樣的:如何在自定義窗體後聯想到漫畫

class ComicSeries(models.Model): 
     """Model definition for ComicSeries.""" 

     # TODO: Define fields here 
     user = models.ForeignKey(User, on_delete=models.CASCADE, 
       null=True, blank=True, verbose_name='Uploaded by: ' 
      ) 
     title = models.CharField(verbose_name='Series Title', max_length=500) 
     cover = models.ImageField(verbose_name='Series cover', upload_to='comic_series', 
       height_field=None, width_field=None, max_length=None 
      ) 
     description = models.TextField(verbose_name='Description') 
     artist = models.CharField(verbose_name='Artist(s)', max_length=500) 
     date_uploaded = models.DateTimeField(auto_now_add=True) 
     slug = models.SlugField(default='') 

class ComicIssue(models.Model): 
    """Model definition for ComicIssue.""" 

    # TODO: Define fields here 
    user = models.ForeignKey(User, on_delete=models.CASCADE, 
      null=True, blank=True, verbose_name='Uploaded by: ' 
     ) 
    title = models.ForeignKey(ComicSeries, on_delete=models.CASCADE, verbose_name='Series Title') 
    issue = models.CharField(verbose_name='Issue Number', max_length=500) 
    issue_title = models.CharField(verbose_name='Issue Title', max_length=1000) 
    issue_cover = models.ImageField(verbose_name='Issue cover', upload_to='comic_issues', height_field=None, width_field=None, max_length=None) 
    issue_description = models.TextField(verbose_name='Description') 
    issue_file = models.FileField(verbose_name='Issue file', upload_to='comic_issues_files', max_length=100, 
     help_text='File in pdf or as single image' 
    ) 
    is_favorite = models.BooleanField(default=False) 
    issue_slug = models.SlugField(default='') 

views.py:

class ComicIssueCreate(LoginRequiredMixin, CreateView): 
    model = ComicIssue 
    fields = ['issue_title', 'issue_cover', 'issue_description', 'issue_cover', 'issue_file'] 

    def form_valid(self, form): 
     form.instance.user = self.request.user 
     return super(ComicIssueCreate, self).form_valid(form) 

我能夠選擇其中一個ComicSeries屬於ComicIssue在Django管理員。

In django admin there is an option to upload

But on my form, there is no field when I add 'title'

模板:

{% block body %} 
    <div class="container"> 
    <h2>Add new comic issue/chapter</h2> 
    <form class="form", action="", method="POST", enctype="multipart/form-data"> 
     {% csrf_token %} 
     {% for field in form %} 
     <div class="form-group form"> 
      <span class="text-danger small"> 
       {{field.errors}} 
      </span> 
     </div> 
     <label class="control-label col-sm-2"> 
      {{field.label_tag}} 
      {{field.help_text}} 
     </label> 
     <div class="col-sm-10">{{field}}</div> 
     {% endfor %} 
     <button type="submit" class="btn grey-text black">Add</button> 
    </form> 
    </div> 
{% endblock body %} 

但是我有一個自定義窗體這樣一個問題。有沒有一種方法可以確定問題屬於使用CreateView的自定義表單中的哪個系列?

回答

0

你錯過了「 title'在視圖中指定的字段中。由於標題是ComicIssue到ComicSeries外鍵,您需要包括在田間地頭,實現什麼需要

class ComicIssueCreate(LoginRequiredMixin, CreateView): 
     model = ComicIssue 
     fields = ['title', 'issue_title', 'issue_cover', 'issue_description', 
        'issue_cover', 'issue_file'] 

     def form_valid(self, form): 
      form.instance.user = self.request.user 
      return super(ComicIssueCreate, self).form_valid(form) 

更新: 問題是由於MaterializeCSS未初始化的「選擇」。這是必要的選擇領域工作MaterialiseCSS

<script> 
    $(document).ready(function() { 
     $('select').material_select(); 
    }); 
    </script> 
+0

當我添加標題時,它在窗體上不顯示任何內容。標籤在那裏,但沒有選項或字段來填寫。 – Kariuki

+0

您可以提供表單呈現的模板嗎? –

+0

我在問題 – Kariuki

0

在ComicIssueCreate的領域應包括標題

所以田= [ '標題', 'issue_title', 'issue_cover', 'issue_description', 'issue_cover', 'issue_file']

+0

當我添加標題時,它不顯示在窗體上。標籤在那裏,但沒有選項或字段可供填寫。 – Kariuki

+0

您應該首先在管理員中添加幾個漫畫標題,然後添加漫畫標題,您可以添加屬於漫畫標題或漫畫的特定漫畫問題。 – cpkthompson

+0

我添加了一些鏈接,當我添加「標題」時,我的表單看起來像是什麼樣子的截圖。 – Kariuki

相關問題