簡體   English   中英

django視圖創建模型對象

[英]django view create model object

我的網站使用了評分功能,用戶可以創建一個新類別的請求,此后至少有100個用戶必須對此請求進行評分,如果100/100個用戶對該請求的評分為positiv,則應該創建該類別,但我不知道評級達到100/100肯定票后如何創建類別模型實例。

views.py

def category_request_up_vote (request, pk):
    category_request = get_object_or_404(CategoryRequests, pk=pk)
    try:
        if request.method == 'GET':
            if category_request.author == request.user:
                messages.error(request, 'You are trying to vote a request you created by your own. Thats not possible (Transmision ignored).')
                return redirect('category_request_detail', pk=category_request.pk)
            if CategoryRequests_Vote.objects.filter(voter=request.user, voted=category_request).exists():
                messages.error(request, 'You already Voted this request. Double votes are not allowed (Transmision ignored).')
                return redirect('category_request_detail', pk=category_request.pk)
            else:
                if category_request.up_vote == 100:
                    print("So what should i do now?")
                else:
                    category_request.up_vote = F('up_vote') + 1
                    category_request.save()
                    CategoryRequests_Vote.objects.create(voter=request.user, voted=category_request)
                    messages.success(request, 'You have successfully Provided an Up-Vote for this Request.')
                    return redirect('category_request_detail', pk=category_request.pk)
        else:
            messages.error(request, 'Uuups, something went wrong, please try again.')
            return redirect('category_request_detail', pk=category_request.pk)
    except:
        messages.error(request, 'Uuups, something went wrong, please try again.')
        return redirect('category_request_detail', pk=category_request.pk)

models.py

class Category(models.Model):
    title = models.CharField(max_length=30, verbose_name="Title")
    description = models.TextField(max_length=200, null=True, blank=False)
    cover = fields.ImageField(blank=False,
                              null=False,
                              upload_to=get_file_path_static_glued,
                              validators=[default_image_size, file_extension_category_cover],
                              dependencies=[FileDependency(
                                  processor=ImageProcessor(format='PNG', quality=99, scale={
                                      'max_width': 700, 'max_height': 700}))])

    class Meta:
        verbose_name = "Category"
        verbose_name_plural = "Categories"
        ordering = ['title']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.post = None
        self.post_sell_multiple = None


    def __str__(self):
        return self.title

    @classmethod
    def get_indexable(cls):
        return cls.objects.all()

    @classmethod
    def configure_mapping(cls, mapping):
        # mapping is an elasticsearch_dsl Mapping object
        mapping.field('title', 'string')
        return mapping


class CategoryRequests(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=20, verbose_name="Title")
    description = models.TextField(max_length=200, null=True, blank=True)
    cover = fields.ImageField(
                              null=True,
                              blank=True,
                              upload_to=get_file_path_user_uploads,
                              validators=[default_image_size, default_image_file_extension],
                              dependencies=[FileDependency(processor=ImageProcessor(
                                  format='PNG', quality=99, scale={'max_width': 700, 'max_height': 700}))])
    published_date = models.DateField(auto_now_add=True, null=True)
    status = StatusField(default='Waiting')
    STATUS = Choices('Waiting', 'Rejected', 'Accepted')
    up_vote = models.IntegerField(default=0)
    down_vote = models.IntegerField(default=0)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    class Meta:
        verbose_name = "Category Request"
        verbose_name_plural = "Category Request(s)"
        ordering = ['title']

    def __str__(self):
        return self.title

CategoryRequest模型具有Category模型所需的字段,例如標題,描述等。

為此,請在if category_request.up_vote == 100:內使用簡單的Django ORM if category_request.up_vote == 100:您可以編寫,

category=Category.objects.create(title=category_request.title,description=category_request.description)

在下一行category.save()添加Category模型需要的其他字段。 因此,現在創建了類別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM