在下面的序列化程序中,我有一个嵌套的serializer [ ContainerSerializer]字段,我想从(容器)中排除一个字段,ContainerSerializer但我不希望任何更改ContainerSerializer.我怎样才能做到这一点?
class BLcontainerMergedSerializer(serializers.ModelSerializer):
container = ContainerSerializer()
class Meta:
model = BLcontainer
Run Code Online (Sandbox Code Playgroud) 我有4个这样的模特
class Site(models.Model):
name = models.CharField(max_length=200)
def get_lowest_price(self, mm_date):
'''This method returns lowest product price on a site at a particular date'''
class Category(models.Model):
name = models.CharField(max_length=200)
site = models.ForeignKey(Site)
class Product(models.Model):
name = models.CharField(max_length=200)
category = models.ForeignKey(Category)
class Price(models.Model):
date = models.DateField()
price = models.IntegerField()
product = models.ForeignKey(Product)
Run Code Online (Sandbox Code Playgroud)
这里每个都有很多类别,每个类别都有很多产品.现在产品价格每天都在变化,所以价格型号将保持产品价格和日期.
我的问题是我想按价格范围过滤网站过滤器列表.此价格范围取决于get_lowest_price方法,可以是Min to Max和Max to Min.我已经使用lambda表达式来做到这一点,但我认为这是不合适的
sorted(Site.objects.all(), key=lambda x: x.get_lowest_price(the_date))
Run Code Online (Sandbox Code Playgroud)
此外,我可以通过运行循环获得价格范围内的所有网站,但这也不是一个好主意.请帮助我的人以正确的方式进行查询.
如果您仍然需要更清晰的问题视图,请参阅"Ishtiaque Khan"的第一条评论,他的假设是100%正确的.
*在这些型号中,写入频率低且读取频率高.
在下面的程序中,我尝试在1to 之间输入一个数字,100但是如果我在语句的执行时间内输入a 'character'或"string"(如s或sova),scanf()则会创建一个无限循环.所以我试着做....当我输入一个字符串或一个字符时,它向我显示一条消息,例如"输入了错误的值.再次输入",它将再次输入...
Thanx;
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
while(!(a>=1&&a<=100))
{
printf("wrong value entered. enter again\n");
scanf("%d",&a);
}
printf("you enter %d. Thanxz",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)