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')
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
, можно просто взять его из базы, а не создавать новый. parser_classes
в сериалайзер и переопределить метод perform_create
from rest_framework.parsers import MultiPartParser, FormParser
class PhotoViewSet(viewsets.ModelViewSet):
queryset = Photo.objects.all()
serializer_class = PhotoSerializer
parser_classes = (MultiPartParser, FormParser,)
def perform_create(self, serializer):
serializer.save(img=self.request.data.get('img'))
app.service
нужно поменять строчку загрузки файла, fd.append('file', file)
fd.append('img', file)
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
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 %}