class Vehicles(models.Model): name = models.CharField(max_length=200, blank=False, null=False) slug = models.SlugField(blank=True, unique=True) category = models.ForeignKey('VehicleCategory', on_delete=models.CASCADE) passenger = models.IntegerField(default=4, null=False, blank=False) year = models.CharField(max_length=4, blank=False, null=False) body_style = models.CharField(max_length=100, blank=False, null=False) engine = models.CharField(max_length=100, blank=False, null=False) transmission = models.CharField(max_length=100, blank=False, null=False) price = models.DecimalField(max_digits=5, decimal_places=2, blank=False, null=False) image = models.ImageField(upload_to=upload_image_path, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) content = FroalaField(null=True, blank=True, theme='dark') content_ru = FroalaField(null=True, blank=True, theme='dark') content_es = FroalaField(theme='dark', null=True, blank=True) content_bg = FroalaField(theme='dark', null=True, blank=True) def __str__(self): return f'{self.name}' def get_absolute_url(self): return reverse("vehicle_details", kwargs={"slug": self.slug}) class Meta: verbose_name = 'Vehicle' verbose_name_plural = 'Vehicles'
class EventProblem(models.Model): title = models.CharField(max_length=100) statement = FroalaField(options={ 'height': 300, 'lineHeights': { 'Default': '', 'Single': '1', '1.15': '1.15', '1.5': '1.5', 'Double': '2' } }, theme='gray', blank='true') constraint = FroalaField(options={ 'height': 100, 'placeholderText': 'e.g.,<br><ul><li>N > 10<sup>9 </sup> </li><li>A<sub>1</sub>+A<sub>2</sub>+........+A<sub>N</sub> > 10<sup>18</sup></li></ul>' }, theme='gray', blank='true') input_format = models.TextField() output_format = models.TextField() sample_input = models.TextField() sample_output = models.TextField() explaination = models.TextField() time_limit = models.IntegerField(default=1) input_file = models.FileField(upload_to='inputs/') output_file = models.FileField(upload_to='outputs/') def __str__(self): return self.title
class Tour(models.Model): name = models.CharField(max_length=100, blank=False, null=False) slug = models.SlugField(blank=True, unique=True) description = models.CharField(max_length=400, blank=False, null=False) price = models.DecimalField(max_digits=5, decimal_places=2, blank=False, null=False) duration = models.IntegerField(blank=False, null=False) city = models.CharField(max_length=200) rating = models.IntegerField(default=5) category = models.ForeignKey('TourCategory', on_delete=models.CASCADE) image = models.ImageField(upload_to=upload_image_path, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) content = FroalaField(null=True, blank=True, theme='dark' ) content_ru = FroalaField(null=True, blank=True, theme='dark') content_es = FroalaField(theme='dark', null=True, blank=True) content_bg = FroalaField(theme='dark', null=True, blank=True) def __str__(self): return f"{self.name} | {self.description}" def get_absolute_url(self): return reverse("tour_details", kwargs={'slug': self.slug}) class Meta: verbose_name = 'Tour' verbose_name_plural = 'Tours'
class SurveyResource(models.Model): survey = models.ForeignKey(Survey) title = models.CharField(max_length=128) resource_url = models.CharField(max_length=1024, null=True, blank=True) description = FroalaField(null=True, blank=True) resource_html = FroalaField(null=True, blank=True) def __str__(self): return self.title
class Post(models.Model): title = models.CharField(max_length=140) bodyszort = FroalaField() body = FroalaField() date = models.DateTimeField() #category = models.ManyToManyField(Category, verbose_name='Kategoria') img = models.ImageField(upload_to='admina', null=True, blank=True) is_published = models.BooleanField(default=True, blank=True) def __str__(self): return self.title
class CookiePolicy(models.Model): content = FroalaField(theme='dark') content_ru = FroalaField(theme='dark', null=True, blank=True) content_es = FroalaField(theme='dark', null=True, blank=True) content_bg = FroalaField(theme='dark', null=True, blank=True) def __str__(self): return "Cookie Policy" class Meta: verbose_name = 'Cookie Policy' verbose_name_plural = 'Cookie Policies'
class VisaServices(models.Model): name = models.CharField(default='E-visa to Azerbaijan', max_length=200) content = FroalaField(theme='dark') content_ru = FroalaField(theme='dark', null=True, blank=True) content_es = FroalaField(theme='dark', null=True, blank=True) content_bg = FroalaField(theme='dark', null=True, blank=True) image = models.ImageField(upload_to='visa/e_visa', null=True, blank=True) def __str__(self): return f"{self.name}" class Meta: verbose_name = 'Visa Services' verbose_name_plural = 'Visa Services'
class StaticPublicPages(TimeStampedModel): """ Public visible pages: each chunk corresponds to one page. It can be found by its unique page code. """ pagecode = models.CharField( verbose_name=_('Seitencode'), help_text=_('Der Seitencode ordnet die Textchunks eindeutig ' 'zu html Seiten zu. Die Views greifen die Seiten ' 'über den Seitencode ab.'), max_length=20, primary_key=True) seo = models.ForeignKey(PageSEO, null=True, blank=True) text = FroalaField(verbose_name=_('Text'), blank=True) title = FroalaField(verbose_name=_('Seitentitel'), blank=True) description = models.CharField( verbose_name=_('interne Beschreibung der Seite'), help_text=_('wird nicht nach aussen angezeigt.'), max_length=250) banner = models.ImageField(verbose_name=_('Banner'), help_text=_('Optional'), upload_to=foto_location, blank=True) #page_seo = models.ForeignKey(PageSEO, blank=True, null=True) meta_keywords = models.CharField( verbose_name=_('Meta Keywords'), help_text=_('HTML Meta Information zur Seite.'), max_length=250) meta_description = models.CharField( verbose_name=_('Meta Description'), help_text=_('HTML Meta Information zur Seite.'), max_length=250) meta_title = models.CharField( verbose_name=_('Meta Titel'), help_text=_('HTML Meta Information zur Seite.'), max_length=250) slug = models.SlugField(blank=True, null=True) template_name = models.CharField(max_length=100, blank=True) is_ready = models.BooleanField(verbose_name="fertig", default=False) class Meta: verbose_name = 'Öffentliche statische Seite' verbose_name_plural = 'Öffentliche statische Seiten' def __unicode__(self): return self.pagecode def get_absolute_url(self): return reverse_lazy('home:public', kwargs={'slug': self.slug})
class Problem(models.Model): title = models.CharField(max_length=100) statement = FroalaField(options={ 'height': 300, 'lineHeights': { 'Default': '', 'Single': '1', '1.15': '1.15', '1.5': '1.5', 'Double': '2' } }, theme='gray', blank='true') constraint = FroalaField(options={ 'height': 100, 'placeholderText': 'e.g.,<br><ul><li>N > 10<sup>9 </sup> </li><li>A<sub>1</sub>+A<sub>2</sub>+........+A<sub>N</sub> > 10<sup>18</sup></li></ul>' }, theme='gray', blank='true') input_format = models.TextField() output_format = models.TextField() sample_input = models.TextField() sample_output = models.TextField() explaination = models.TextField() time_limit = models.IntegerField(default=1) difficulty = models.CharField(max_length=10) auth = models.ForeignKey(User, on_delete=models.CASCADE) date_added = models.DateTimeField(default=timezone.now) input_file = models.FileField(upload_to='inputs/') output_file = models.FileField(upload_to='outputs/') difficultylevel = models.IntegerField("default=1") def __str__(self): return self.title def save(self, *args, **kwargs): if self.difficulty == "Easy": self.difficultylevel = 1 elif self.difficulty == "Medium": self.difficultylevel = 2 elif self.difficulty == "Hard": self.difficultylevel = 3 else: self.difficultylevel = 4 super().save(*args, **kwargs)
class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments') user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_comments') body = FroalaField(plugins=( 'emoticons', 'char_counter', ), max_length=500, verbose_name='Comment') created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) active = models.BooleanField(default=True) class Meta: ordering = ( '-updated', '-created', ) def __str__(self): return 'Comment by {} on {}'.format(self.user, self.post)
class Post(models.Model): name = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique=True, verbose_name='Post Url') content = FroalaField(blank=True) picture = models.ImageField(upload_to=get_file_path, blank=True, verbose_name='Select picture') category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name='Category') tags = models.ManyToManyField(Tag, blank=True, related_name='Tags') created_at = models.DateTimeField(auto_now_add=True, verbose_name='Published') author = models.CharField(max_length=100, blank=True) views = models.IntegerField(default=0, verbose_name='Views') hit_count_generic = GenericRelation(HitCount, object_id_field='object_pk') related_query_name = 'hit_count_generic_relation' def __str__(self): return self.name def get_absolute_url(self): return reverse("get_post", kwargs={"slug": self.slug}) class Meta: verbose_name = 'Post' verbose_name_plural = 'Posts' ordering = ['-created_at']
class Answers(models.Model): """ Answers Model - Relates to the Question Model with one to many relationship """ IMAGE_ANS = 'IM' TEXT_ANS = 'TX' ANSWER_TYPES = [ (IMAGE_ANS, 'Image'), (TEXT_ANS, 'Text'), ] question = models.ForeignKey(Question, related_name='answers', on_delete=models.CASCADE) answer_text = FroalaField(blank=True) answer_image = models.ImageField(blank=True) answer_type = models.CharField(max_length=2, choices=ANSWER_TYPES, default=TEXT_ANS) def answers_for_question(self): return Answers.objects.filter(question_id=self.question_id) def __str__(self): answers = self.answers_for_question() current_answer = Answers.objects.get(pk=self.id) current = 1 for i in answers: if i == current_answer: return 'Answer ' + str(current) else: current += 1 return str(current)
class Post(TimeStampedModel): DRAFT = 'draft' PUBLISHED = 'published' STATUS_CHOICES = ( (DRAFT, 'Draft'), (PUBLISHED, 'Published') ) title = models.CharField(_('title'), max_length=250) slug = models.SlugField(_('slug'), max_length=250, unique=True) author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,) body = FroalaField(_('body')) category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True) publish = models.DateTimeField(_('publish'), default=timezone.now) status = models.CharField(_('status'), max_length=10, choices=STATUS_CHOICES, default='draft') # Managers objects = models.Manager() published = PublishedManager() tags = TaggableManager() class Meta: verbose_name = 'post' verbose_name_plural = 'posts' ordering = ('-publish',) def __str__(self): return self.title def get_absolute_url(self): return reverse('blog:post_detail', kwargs={'slug': self.slug})
class Page(models.Model): title = models.CharField(max_length=255) slug = models.SlugField( max_length=255, blank=True, null=True, help_text='Leave empty/unchanged for default slug.') content = FroalaField(null=True, blank=True) author = models.ForeignKey(User) statuses = (('Published', 'Published'), ('Draft', 'Draft'), ('Trashed', 'Trashed')) status = models.CharField(max_length=10, choices=statuses, default='Published') comments_enabled = models.BooleanField(default=True) categories = models.ManyToManyField(Category, blank=True) created_at = models.DateTimeField(editable=False) updated_at = models.DateTimeField(editable=False) def save(self, *args, **kwargs): unique_slugify(self, self.title) if not self.id: self.created_at = datetime.datetime.today() self.updated_at = datetime.datetime.today() super(Page, self).save(*args, **kwargs) def get_absolute_url(self): return reverse('view_page', kwargs={'slug': self.slug}) def __str__(self): return self.title
class Post(models.Model): author = models.ForeignKey(Author, on_delete=models.DO_NOTHING, null=True) title = models.CharField(max_length=200, null=True) short_description = models.TextField(max_length=200, null=True) main_content = FroalaField(null=True) date = models.DateTimeField(default=timezone.now) post_picture = models.ImageField(upload_to="posts/headers", null=True, default="authors/default.jpeg") slug = models.SlugField(max_length=100, null=True) category = models.ManyToManyField( Category, blank=True, verbose_name="Category/Genre (Optional) e.g Love,Drama,HeartBreaking.." ) tags = models.ManyToManyField( Tag, blank=True, verbose_name="Tags/Emotions (Optional) e.g Sad,Happy, Funny") def __str__(self): return self.title def get_absolute_url(self): return reverse("author:profile")
class Material(models.Model): concepto = models.ForeignKey(Concepto) nombre = models.CharField(max_length=50) slug = models.SlugField() #video = models.CharField(max_length=200, blank=True, default="", help_text='La url donde se encuentra el video para el streaming') video = models.FileField(upload_to="instructivos-videos/", blank=True) contenido = FroalaField(null=True, blank=True) activo = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.nombre class Meta: verbose_name_plural = "Materiales" def save(self, *args, **kwargs): if not self.id: self.slug = slugify(self.nombre) super(Material, self).save(*args, **kwargs) def edit_url(self): return "/manager/material/%s/editar/" % self.slug def delete_url(self): return "/manager/material/%s/eliminar/" % self.slug def get_video(self): return self.video.url
class Advertising(models.Model): class PositionChoices: TOP_LEFT = 1 TOP_RIGHT = 2 BOTTOM_LEFT = 3 BOTTOM_RIGHT = 4 CHOICES = ((TOP_LEFT, _('top left')), (TOP_RIGHT, _('top right')), (BOTTOM_LEFT, _('bottom left')), (BOTTOM_RIGHT, _('bottom right'))) rank = models.PositiveIntegerField(_('Rank')) position = models.PositiveSmallIntegerField( _('Position in page'), choices=PositionChoices.CHOICES) title = models.CharField(_('Title'), max_length=100) when_created = models.DateTimeField(_('When created'), auto_now_add=True) when_updated = models.DateTimeField(_('When updated'), auto_now=True) content = FroalaField() active = models.BooleanField(_('Active'), default=True) def __str__(self): return self.title class Meta: verbose_name_plural = _('Advertisings') verbose_name = _('Advertising') ordering = ('position', 'rank')
class Post(AuthorModelMixin, VotableModelMixin, models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name='posts', on_delete=models.SET_NULL) onetime_user = models.OneToOneField('OneTimeUser', blank=True, null=True, related_name='post', on_delete=models.SET_NULL) ipaddress = models.GenericIPAddressField(protocol='IPv4') board = models.ForeignKey('Board', related_name='posts') category = models.ForeignKey('Category', blank=True, null=True, related_name='posts') title = models.CharField(max_length=50) contents = FroalaField() tags = models.ManyToManyField('Tag', blank=True, null=True, related_name='posts') viewcount = models.PositiveIntegerField(default=0) created_time = models.DateTimeField(auto_now_add=True) modified_time = models.DateTimeField() def __str__(self): return self.title def get_absolute_url(self): return reverse('post_detail', kwargs={'pk': self.id}) def save(self, *args, **kwargs): self.contents = clean_html(self.contents) if kwargs.pop('auto_now', True): self.modified_time = timezone.now() super().save(*args, **kwargs) class Meta: ordering = ['-created_time']
class Article(models.Model): name = models.CharField(max_length=250,blank=True,null=True) article_type = models.CharField(max_length=250,blank=True,null=True) description = models.CharField(max_length=250,blank=True,null=True) created = models.DateField(default=timezone.now,null=True, blank=True) updated = models.DateField(default=timezone.now,null=True, blank=True) artcle_image = models.ImageField(upload_to='picture',blank=True) author = models.CharField(max_length=250,blank=True,null=True) data = FroalaField() slug = models.SlugField(blank=True,null=True) def save(self, *args, **kwargs): self.slug = slugify(self.name) self.artcle_image = self.CompressImage(self.artcle_image) super(Article, self).save(*args, **kwargs) def __str__(self): return self.name def CompressImage(self,uploadedImage): imageTemproary = Image.open(uploadedImage) outputIoStream = BytesIO() imageTemproaryResized = imageTemproary.resize( (160,300) ) imageTemproary.save(outputIoStream , format='JPEG', quality=60) outputIoStream.seek(0) uploadedImage = InMemoryUploadedFile(outputIoStream,'ImageField', "%s.jpg" % uploadedImage.name.split('.')[0], 'image/jpeg', sys.getsizeof(outputIoStream), None) return uploadedImage
class Product(TimeStampedModel): description = FroalaField(blank=True) # price with currency price = models.DecimalField(max_digits=12, decimal_places=2, null=True, blank=True, verbose_name=_('Verkaufspreis')) currency = enum.EnumField(Currency, default=Currency.EUR) price_changed = MonitorField(monitor='price', verbose_name=_("letzte Preisänderung am")) display_nr = models.IntegerField(default=1) # product type product_type = enum.EnumField(Producttype, default=Producttype.OTHER) objects = ProductManager() class Meta: abstract = True def __unicode__(self): return "%s: %s" % (self.name)
class Jobs(models.Model): title = models.CharField(max_length=100) slug = models.SlugField(blank=True, default='') office = models.ForeignKey(Office, on_delete=models.CASCADE) salery = MoneyField(max_digits=14, decimal_places=2, default_currency='USD') Description = FroalaField() created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) job_type = models.CharField(max_length=100, choices=(('Full Time', 'Full Time'), ('Part Time', 'Part Time')), default='Full Time') applyed_users = models.ManyToManyField(User) saved_users = models.ManyToManyField(User, related_name='saved_users') tags = models.TextField(max_length=100, default="") def save(self, *args, **kwargs): self.slug = get_random_string(length=32) self.tags = self.tags.split(",") super(Jobs, self).save(*args, **kwargs) def __str__(self): return self.title
class Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,) title = models.CharField(max_length=200) content = FroalaField() featured_image = models.ImageField( upload_to='posts', blank=True) created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True, null=True) tags = TaggableManager(blank=True) cheers = models.ManyToManyField( settings.AUTH_USER_MODEL, related_name="post_cheers", symmetrical=False, blank=True) def author_string(self): return str(self.author) def all_comments(self): return self.comments.all().order_by('-created_date') def __str__(self): return self.title def publish(self): self.published_date = timezone.now() self.save() def get_absolute_url(self): return reverse('medium:post', kwargs={'pk': self.pk})
class Post(models.Model): title = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique=True) image = models.ImageField(upload_to=get_file_path) content = FroalaField(blank=True) created_at = models.DateTimeField(auto_now=True, verbose_name='Published') category = models.ForeignKey(Category, null=True, related_name='posts', on_delete=models.PROTECT) def __str__(self): return self.title def get_absolute_url(self): return reverse("post", kwargs={"slug": self.slug}) def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.title)+'-' + \ slugify(self.created_at.ctime()) super(Post, self).save() class Meta: verbose_name = 'Post' verbose_name_plural = 'Posts' ordering = ['-created_at']
class Company(models.Model): title = models.CharField(max_length=100, blank=False) display_name = models.CharField(max_length=100, null=True, blank=True) slug = models.SlugField(blank=True, default='') city = models.CharField(max_length=100, blank=False) country = CountryField(default='') Description = FroalaField() hiring_agency = models.BooleanField(default=False) eeo_text = models.TextField( null=True, blank=True) # Equal Employment Opportunity legal disclaimer text since = models.IntegerField(choices=YEAR_CHOICES, default=current_year) contact_info = models.CharField(max_length=100, blank=False, default="") website = models.URLField(max_length=100, blank=False, default="") facebook = models.URLField(max_length=100, blank=True) twitter = models.URLField(max_length=100, blank=True) linkedin = models.URLField(max_length=100, blank=True) logo = models.ImageField(upload_to=image_path, default=0, null=True, blank=True) def save(self, *args, **kwargs): self.slug = get_random_string(length=16) self.website = self.website.replace("https://", "") self.twitter = self.twitter.replace("https://", "") if self.display_name is None: self.display_name = self.title super(Company, self).save(*args, **kwargs) def __str__(self): return self.title
class Comment(AuthorModelMixin, VotableModelMixin, models.Model): post = models.ForeignKey('Post', related_name='comments') comment = models.ForeignKey('self', related_name='subcomments', blank=True, null=True) user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name='comments', on_delete=models.SET_NULL) onetime_user = models.OneToOneField('OneTimeUser', blank=True, null=True, related_name='comment', on_delete=models.SET_NULL) ipaddress = models.GenericIPAddressField(protocol='IPv4') contents = FroalaField(options=settings.FROALA_EDITOR_OPTIONS_COMMENT) created_time = models.DateTimeField(auto_now_add=True) @property def depth(self): def _depth(c, d=0): if c.comment is not None: return _depth(c.comment, d + 1) return d return _depth(self) def save(self, *args, **kwargs): self.contents = clean_html(self.contents) super().save(*args, **kwargs) def get_absolute_url(self): return (reverse('post_detail', kwargs={'pk': self.post.id}) + '#c{0}'.format(self.id)) class Meta: ordering = ['-created_time']
class Post(models.Model): STATUS_CHOICES = ( ('draft', 'Draft'), ('published', 'Published'), ) title = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique_for_date='publish') author = models.ForeignKey(User, related_name='blog_posts') intro = models.TextField(max_length=250, default="") body = FroalaField() publish = models.DateTimeField(default=timezone.now) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft') objects = models.Manager() published = PublishedManager() class Meta: ordering = ('-publish', ) def __str__(self): return self.title def get_absolute_url(self): return reverse('blog:post_detail', args=[ self.publish.year, self.publish.strftime('%m'), self.publish.strftime('%d'), self.slug ])
class Post(models.Model): """文章模型""" STATUS_CHOICES = ( ('D', '草稿'), ('P', '发表'), ) title = models.CharField(max_length=255, verbose_name='标题') content = FroalaField(verbose_name='内容', blank=True, null=True) created = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') updated = models.DateTimeField(auto_now=True, verbose_name='更新时间') status = models.CharField('文章状态', max_length=1, choices=STATUS_CHOICES, default='p') author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name='作者') view_num = models.PositiveIntegerField(default=0, verbose_name='浏览次数') category = models.ForeignKey('Category', verbose_name='分类', on_delete=models.PROTECT, blank=True, null=True) tags = models.ManyToManyField('Tag', verbose_name='标签集合') comments = GenericRelation(Comment) class Meta: verbose_name = "文章" verbose_name_plural = verbose_name ordering = ['-created'] def __str__(self): return self.title
class Posts(models.Model): title = models.CharField(max_length=100) overview = models.TextField() timestamp = models.DateTimeField(auto_now_add=True) content = FroalaField() comment_count = models.IntegerField(default=0) view_count = models.IntegerField(default=0) author = models.ForeignKey(Users, on_delete=models.CASCADE) thumbnail = models.ImageField(upload_to='thumbnail', blank=True, null=True) tags = models.ManyToManyField(to='Tag') views = models.ManyToManyField(to='Remote', blank=True) category = models.ForeignKey(Category, on_delete=models.CASCADE) # 增加一个字段后make时会提示2选1,选第一个,然后输入True def __str__(self): return self.title class Meta: verbose_name = '文章' verbose_name_plural = verbose_name db_table = 'Posts' # 可以根据blog对象的id生成格式为/blog/2的url,达到点击链接进入文章详情功能 def get_absolutly_url(self): return reverse('blog_detail', kwargs={'id': self.id}) def get_update_url(self): pass @property def get_comments(self): return self.comment.all().order_by('-timestamp')
class Post(MetaTagBase): title = models.CharField(max_length=200) text = FroalaField(image_upload=True) topic = models.ForeignKey(Topic, on_delete=models.SET_NULL, related_name='posts', null=True, blank=True) published_date = models.DateField(blank=True, null=True) tags = fields.ArrayField(models.CharField(max_length=200), blank=True, default=list) clicks = models.IntegerField(blank=True, default=0) likes = models.IntegerField(blank=True, default=0) dislikes = models.IntegerField(blank=True, default=0) preferences = fields.JSONField(blank=True, default=dict) objects = models.Manager() published = PublishedMenager() class Meta: ordering = ['-published_date'] indexes = [ models.Index(fields=['-published_date']), ] def publish(self): self.published_date = timezone.now() self.save() def __str__(self): return self.title def get_absolute_url(self): return reverse('blog:post_detail', kwargs={'pk': self.pk})
class Post(models.Model): #objects=models.Manager() #published=PublishedManager() #tags=TaggableManager() #STATUS_CHOICES=(('draft','Draft'),('publish','Publish')) title = models.CharField(max_length=250) image = models.ImageField(upload_to='images/') #slug=models.SlugField(max_length=250,unique=True) author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts') body = FroalaField() publish = models.DateTimeField(default=timezone.now) created = models.DateTimeField(auto_now_add=True) #updated=models.DateTimeField(auto_now=True) #status=models.CharField(max_length=10,choices=STATUS_CHOICES,default='draft') def get_absolute_url(self): return reverse('blogdetail', args=(str(self.id))) #class Meta: # ordering=('-publish',) def __str__(self): return self.title