Как загрузить файлы на основе первичного ключа Foreignkey? - PullRequest
0 голосов
/ 24 июня 2019

В основном я пытаюсь создать приложение, которое позволит пользователю загружать уроки, такие как документы, на свои конкретные посты. Тем не менее, я не уверен, как мне отображать загруженные документы на основе первичного ключа сообщений. На данный момент в моих сообщениях отображаются все документы, загружаемые конкретным пользователем.

Это моя модель "Пост"

class Post(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(default = 'default0.jpg', upload_to='course_image/')
    description = models.TextField()
    price = models.DecimalField(decimal_places=2, max_digits=6)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    rating = models.IntegerField(default = 0)

    def __str__(self):
        return self.title

Это моя модель "Урок"

class Lesson(models.Model):
    title = models.CharField(max_length=100)
    file = models.FileField(upload_to="lesson/pdf")
    date_posted = models.DateTimeField(default=timezone.now)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('lesson_upload', kwargs={'pk': self.pk})

Это мой список просмотра на основе классов, который должен отображать загруженные уроки на основе сообщений:

class LessonListView(ListView):
model = Lesson
template_name = 'store/uploaded_lesson.html'
context_object_name = 'lesson'

def get_queryset(self):
    self.post = get_object_or_404(post, name=self.kwargs['post'])
    return Lesson.objects.filter(post=self.post)
{% extends "store/base.html" %}
{% block content %}
    <div id="main">
    <table class="table mb-0">
    <thead>
      <tr>          
        <th>Title</th>
        <th>Author</th>
        <th>Download</th>
        <th>Delete</th>
      </tr>
    </thead>
    <tbody>
      {% for lesson in lesson %}
      <tr>
        <td>
            {% if lesson.file %}
                <img src="{{ lesson.file.url }}"  style="width:100px;">
            {% else %}   
            {% endif %}
        </td>
      </tr>
      {% endfor %}
    </tbody>
  </table>
</div>
{% endblock %}

1 Ответ

1 голос
/ 24 июня 2019

Вам понадобится другая модель для загружаемого материала.Что-то вроде:

class UploadedPostMaterial(models.Model):
    content= models.TextField()
    date_uploaded = models.DateTimeField(default=timezone.now)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

Эта модель будет содержать загруженные данные и привязывать их к сообщению.Теперь, когда вы отображаете все или определенные сообщения в своем приложении, вы можете выбрать соответствующий контент для каждого сообщения и отобразить загруженный контент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...