Hi Iam try to select from mysql using Django my models.py
from django.db import models
from django.db.models import Q
class Series(models.Model):
id = models.IntegerField(primary_key=True)
title = models.CharField(max_length=255)
des = models.CharField(max_length=255)
img = models.CharField(max_length=255)
isseries = models.IntegerField()
istrend = models.CharField(max_length=255)
background_img = models.CharField(max_length=255)
trial_url = models.CharField(max_length=255)
imdb_id = models.CharField(max_length=255)
rate = models.CharField(max_length=255)
date = models.CharField(max_length=255)
status = models.IntegerField()
isdel = models.IntegerField()
section_id = models.IntegerField()
poster_img = models.CharField(max_length=255)
genres = models.CharField(max_length=255)
class Meta:
db_table = 'series'
my sample Script
series = series_db.objects.filter(istrend=1,status=1,isdel=0).order_by('id').values()
i Want to SELECT all Column without isdel so i remove isdel from models.py, but when i remove it i cant use isdel to make WHERE isdel = 0 in mysql so i got This Error
django.core.exceptions.FieldError: Cannot resolve keyword 'isdel' into field.
so how i can use isdel to make a condition without select it LIKE this Example
SELECT `series`.`id`, `series`.`title`, `series`.`des`, `series`.`img`, `series`.`isseries`, `series`.`istrend`, `series`.`background_img`, `series`.`trial_url`, `series`.`imdb_id`, `series`.`rate`, `series`.`date`, `series`.`status`, `series`.`section_id`, `series`.`poster_img`, `series`.`genres` FROM `series` WHERE (`series`.`isdel` = 0 AND `series`.`istrend` = '1' AND `series`.`status` = 1) ORDER BY `series`.`id` ASC
real Example
SELECT `series`.`id`, `series`.`title`, `series`.`des`, `series`.`img`, `series`.`isseries`, `series`.`istrend`, `series`.`background_img`, `series`.`trial_url`, `series`.`imdb_id`, `series`.`rate`, `series`.`date`, `series`.`status`, `series`.`isdel`, `series`.`section_id`, `series`.`poster_img`, `series`.`genres` FROM `series` WHERE (`series`.`isdel` = 0 AND `series`.`istrend` = '1' AND `series`.`status` = 1) ORDER BY `series`.`id` ASC
You don't have to remove the field in model just mention the column you want to retrive in values
like this:
series = Series.objects.filter(
istrend=1,status=1,isdel=0
).order_by('id').values('id', 'title', 'des')
I have added just three columns in values you can add all the columns except the one you don't want.
If your model has lot of field and you find it hard to add them manually one by one then you can get all the fields of the model using _meta
and exclude the given field like this:
fields = [field.name for field in Series._meta.fields if field.name != 'isdel']
series = Series.objects.filter(
istrend=1,status=1,isdel=0
).order_by('id').values(*fields)