这看起来很简单.
在我的模型上save()我想基本上做一个get_or_create().所以我想更新模型(如果存在)或创建新模型(如果不存在).
这似乎是一个非常简单的问题,但我没有做对!
class StockLevel(models.Model):
stock_item = models.ForeignKey(StockItem)
current_stock_level = models.IntegerField(blank=True, default=0)
def save(self):
try:
# it exists
a = StockLevel.objects.get(stock_item=self.stock_item)
a.current_stock_level = self.current_stock_level
a.save()
except:
# is does not exist yet
# save as normaly would.
super(StockLevel, self).save()
Run Code Online (Sandbox Code Playgroud)
要么
def save(self):
stock_level_item , created = StockLevel.objects.get_or_create(stock_item=self.stock_item)
stock_level_item.current_stock_level = self.current_stock_level
stock_level_item.save()
Run Code Online (Sandbox Code Playgroud)
这也将进入无限循环.
这只会将save()置于无限循环中.但这是它应该如何运作的基本思路.
我可能有一个字符串:
"Foo Bar, FooTown, $100,00"
Run Code Online (Sandbox Code Playgroud)
现在我需要用逗号分割该字符串,但这会错误地拆分它,因为它也$100,00包含一个逗号.
所以我首先要查看字符串,是否有逗号的数字,如果是,请用逗号替换逗号.它看起来像:
"Foo Bar, FooTown, $100.00"
Run Code Online (Sandbox Code Playgroud)
这将永远是少数,不会有一个以上的,或.,但也可能是$ 1 $ $ 10 $ 100 1000个
字符串可能会或可能不会有空格 ,
这是一条短信.
我有可能的价格字符串,如:
20.99, 20, 20.12
Run Code Online (Sandbox Code Playgroud)
有时,用户可能会错误地将字符串发送给我:
20.99.0, 20.0.0
Run Code Online (Sandbox Code Playgroud)
这些应该转换回:
20.99, 20
Run Code Online (Sandbox Code Playgroud)
所以基本上从第二个删除任何东西.如果有的话.
为了清楚起见,他们将是一个人,一次一个,所以只需要一个字符串中的一个价格
任何一个漂亮的班轮想法?
你可以过滤这样的模型对象吗?
Foo.objects.filter(name ="This,That,That")
所以过滤所有具有这些名称的对象; 它将返回名称为This,that和那些的所有对象.
如果我知道它只是说3个关键字就可以很容易地使用OR或AND.但就我而言,可能会有一个或多个关键字
我正在使用自定义保存功能将图像路径保存到我的模型图像字段。然后我意识到我只是在保存路径而不是实际对象。我的问题是如何使用 PIL 将该路径转换为对象。
嗨,我有一个名称和姓氏的csv文件和空的用户名和密码列.如何使用python csv写入每行中的第3列和第4列,只是附加到它,而不是覆盖任何内容.
some_list = ['Name','Surname','R500']
some_list = ['Name','Surname','500']
Run Code Online (Sandbox Code Playgroud)
如果得到列表中包含数字的项目的索引,在两种情况下我都应该返回index = 2
我看的是:
some_list.index(r'%r' % '\d+')
Run Code Online (Sandbox Code Playgroud)