2015-05-17 18 views
0

我已經做了一個簡單的商店,用戶可以在他的個人資料中填充餘額,然後可以購買一些數字內容。 現在我需要保存所有購買在一個單獨的模型,在那裏我可以看到,誰買了什麼,什麼時候... 但我不明白,如何在用戶購買物品後在模型中保存該信息... 是我現在...創建購物歷史

與平衡用戶模式和退出功能:

class UserProfile(models.Model): 
    class Meta(): 
     db_table = 'userprofile' 

    user = models.OneToOneField(User) 
    user_picture = models.ImageField(upload_to='users', blank=False, null=False, default='users/big-avatar.jpg') 
    user_balance = models.DecimalField(default=0, max_digits=10, decimal_places=2) 

    def withdraw(self, amount): 
     self.user_balance = self.user_balance - amount 

    def can_purchase_amount(self, amount): 
     if amount <= self.user_balance: 
      return True 

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u) [0]) 

orderstatus的應用程序,在那裏我做了一個模型OrderHistory訂貨歷史:

class OrderHistory(models.Model): 
    class Meta(): 
     db_table = 'order_history' 

    user = models.ForeignKey(User) 
    article = models.ForeignKey(Article) 
    purchase_date = models.DateTimeField(auto_now_add=True) 

一壓腳提升用戶打「買入」,他推出POSTaction,在orderstatus應用程序,遵循以views.py

def checkoutstatus(request, article_id): 

    user_profile = UserProfile.objects.get(user=request.user) 
    article = Article.objects.get(id=article_id) 

    if user_profile.can_purchase_amount(article.article_cost): 

     user_profile.withdraw(article.article_cost) 
     user_profile.save() 

     article.article_users.add(request.user) 

    return redirect('/articles/get/%s' % article_id) 

所以,這種觀點的檢查是用戶有足夠的錢在他的user_balance,如果是,做一個withdraw。因此,如果購買完成,我需要在OrderHistory型號中保存該購買...從未做過此類任務......我該怎麼做?

回答

2

你也許應該補充創造這樣OrderHistory對象:

OrderHistory.objects.create(用戶= request.user,文章=文章)

def checkoutstatus(request, article_id): 

    user_profile = UserProfile.objects.get(user=request.user) 
    article = Article.objects.get(id=article_id) 

    if user_profile.can_purchase_amount(article.article_cost): 

     user_profile.withdraw(article.article_cost) 
     user_profile.save() 

     article.article_users.add(request.user) 

     OrderHistory.objects.create(user=request.user, article=article) 

    return redirect('/articles/get/%s' % article_id) 
+0

哦......不要以爲有些事情有時候這麼簡單......)))謝謝。 –

0

在我的應用我有寫了一個看法

def orderhistory(request): 
order_histroy = Order.objects.filter(user=request.user) 
template = "users/orders.html" 
context = { 
    "order_histroy": order_histroy 
} 
return render(request, template, context)