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='')

视图.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)

我可以在 Django admin 中选择 ComicIssue 所属的 ComicSeries。

在 django admin 中有一个上传选项

但是在我的表单上,当我添加“标题”时没有字段

模板:

{% 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 在自定义表单中确定问题属于哪个系列?

4

2 回答 2

0

ComicIssueCreate 中的字段应包含标题

所以字段 = ['title','issue_title', 'issue_cover', 'issue_description', 'issue_cover', 'issue_file']

于 2017-09-13T16:38:12.487 回答
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 中初始化“选择”。在 MaterializeCSS 中需要选择字段才能工作

   <script> 
   $(document).ready(function() { 
        $('select').material_select(); 
   });
   </script>
于 2017-09-13T16:38:56.510 回答