Ответы пользователя по тегу Django
  • Как можно связать 3 приложение?

    baterson
    @baterson
    python/django
    Если комментарии должны быть связаны с разными моделями. Создайте абстрактный класс с общими полями и методами для дочерних классов и далее расширяйте их, указывая внешний ключ на модель нужного приложения.
    class AbstractComment(models.Model):
    	author = models.ForeignKey(YourUserModel, related_name='comments')
    	text = models.TextField()
    	pud_date = models.DateTimeField(auto_now_add=True)
    
    	class Meta:
    		abstract = True
    
    
    class PhotoComment(AbstractComment):
    	photo = models.ForeignKey(ImageModel, related_name='photo_comments')
    
    
    class BlogComment(AbstractComment):
    	blog = models.ForeignKey(BlogModel, related_name='blog_comments')
    Ответ написан
    Комментировать
  • Как автоматически заполнить пустое поле модели со связью?

    baterson
    @baterson
    python/django
    Если нужно добавить связь, при создании модели Vote, тогда можно перегрузить метод save()
    class Vote(models.Model):
        
        def save(self, *args, **kwargs):
            #Проверяем, что объекта еще нет в базе
            if self.pk is None:
                record = Record.objects.create(#заполняете нужные поля)
                self.record = record
            super(Vote, self).save(*args, **kwargs)

    Из вопроса не до конца ясно, что конкретно нужно, если нужен уже созданный объект Record, можно просто взять его из базы, а не создавать новый.
    Ответ написан
    Комментировать
  • Как работать с данными в промежуточной таблице в Django ORM?

    baterson
    @baterson
    python/django
    Если вы хотите добавить дополнительные поля в ManyToMany таблицу, используйте throw
    class A(models.Model):
        name_a = models.CharField(max_length=100)
    
    class B(models.Model):
        name_b = models.CharField(max_length=100)
        a_b_mtm = models.ManyToManyField(A, throw='A_B')
    
    class A_B(models.Model):
        a = models.ForeignKey(A)
        b = models.ForeignKey(B)
        some_value = models.CharField(max_length=200)
    
    a = A.objects.create(name='some_name')
    b = B.objects.create(name='other_name')
    a_b = A_B.objects.create(a=a, b=b, some_value='some_value')
    all_b = a.objects.b_set.all()  #все объекты b

    И потом в цикле можно взять все some_value или сразу взять все значения через связанную таблицу, а не через a
    вот тут почитайте
    Ответ написан
    Комментировать
  • Как реализовать зависимости при вводе данных в Django?

    baterson
    @baterson
    python/django
    Если хотите завязать события на создание и изменение моделей, посмотрите в сторону сигналов
    djbook.ru/rel1.7/topics/signals.html
    Ответ написан
    Комментировать
  • Как использовать поле ImageField в Django?

    baterson
    @baterson
    python/django
    В settings.py указан путь до статики?
    Обычно такой
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

    И медиа настройки так же
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

    и в урлах добавить такую запись
    from django.conf.urls.static import static
    from django.conf import settings
    urlpatterns = [....
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    Может быть хотели взять все объекты? Step.objects.all() иначе не ясно, как вы выбираете конкретный объект
    Если берете их все, далее в шаблоне можно через цикл вывести фото
    {% for img in stepfieldst %}
    <img src="{{ img.main_photo.url }}" >
    {% endfor %}

    Если выбираете по конкретному объекту, то код будет такой же, только не в цикле
    Ответ написан
    2 комментария
  • Как в Django расширить модель пользователей?

    baterson
    @baterson
    python/django
    неплохой гайд по костомизации модели юзера
    dunmaksim.blogspot.ru/2015/05/django-18.html
    Ответ написан
    Комментировать
  • Как в одом шаблоне отобразить разные модели?

    baterson
    @baterson
    python/django
    В вопросе лучше показать свой код и в чем конкретно проблема. Судя по контексту, просто не понятно как использовать язык шаблонов. Чтобы вывести объекты модели, их нужно передать во вью функции. И далее в html прописать что то типа:
    {% for model in some_model %}
    {{ model.some_method }}
    {% endfor %}

    Если хочешь все модели выводить в разных html файлах и потом перенести на base.html
    Тогда помещай их в шаблон, типа такого { block news } content { endblock }
    и потом размещай в base.html как хочешь, так же через блоки { block news }{ endblock }
    Ответ написан
    Комментировать
  • Как отобразить загруженные изображения в django?

    baterson
    @baterson Автор вопроса
    python/django
    Удалось решить, проблема была в url
    + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    нужно было это добавить в основной файл, а не в url приложения
    Ответ написан
    6 комментариев