djingo数据库 python_使用python从数据库获取数据(在django框架上)

通常,如果我为此编写一个SQL语句,我会这样做,

SELECT * FROM (django_baseaccount LEFT JOIN django_account ON django_baseaccount.user_id = django_account.baseaccount_ptr_id)

LEFT JOIN django_address ON django_account.baseaccount_ptr_id = django_address.user_id;name

我该如何将其应用到使用API查询数据库的djagno方法中,即

TradeDownloads.objects.filter(online=1)[:6]

我的模型

基本帐户

class BaseAccount(models.Model):

user = models.ForeignKey(User, unique=True)

def __unicode__(self):

"""

Return the unicode representation of this customer, which is the user's

full name, if set, otherwise, the user's username

"""

fn = self.user.get_full_name()

if fn:

return fn

return self.user.username

def user_name(self):

"""

Returns the full name of the related user object

"""

return self.user.get_full_name()

def email(self):

"""

Return the email address of the related user object

"""

return self.user.email

账户

class Account(BaseAccount):

"""

The account is an extension of the Django user and serves as the profile

object in user.get_profile() for shop purchases and sessions

"""

telephone = models.CharField(max_length=32)

default_address = models.ForeignKey(Address, related_name='billing_account', blank=True, null=True)

security_question = models.ForeignKey(SecurityQuestion)

security_answer = models.CharField(max_length=200)

how_heard = models.CharField("How did you hear about us?", max_length=100)

feedback = models.TextField(blank=True)

opt_in = models.BooleanField("Subscribe to mailing list", help_text="Please tick here if you would like to receive updates from %s" % Site.objects.get_current().name)

temporary = models.BooleanField()

def has_placed_orders(self):

"""

Returns True if the user has placed at least one order, False otherwise

"""

return self.order_set.count() > 0

def get_last_order(self):

"""

Returns the latest order that this customer has placed. If no orders

have been placed, then None is returned

"""

try:

return self.order_set.all().order_by('-date')[0]

except IndexError:

return None

def get_currency(self):

"""

Get the currency for this customer. If global currencies are enabled

(settings.ENABLE_GLOBAL_CURRENCIES) then this function will return

the currency related to their default address, otherwise, it returns

the site default

"""

if settings.ENABLE_GLOBAL_CURRENCIES:

return self.default_address.country.currency

return Currency.get_default_currency()

currency = property(get_currency)

def get_gateway_currency(self):

"""

Get the currency that an order will be put through protx with. If protx

currencies are enabled (settings.ENABLE_PROTX_CURRENCIES), then the

currency will be the same returned by get_currency, otherwise, the

site default is used

"""

if settings.ENABLE_PROTX_CURRENCIES and settings.ENABLE_GLOBAL_CURRENCIES:

return self.currency

return Currency.get_default_currency()

gateway_currency = property(get_gateway_currency)

地址

class Address(models.Model):

"""

This class encapsulates the data required for postage and payment mechanisms

across the site. Each address is associated with a single store account

"""

trade_user = models.BooleanField("Are you a stockist of N Products", help_text="Please here if you are a Stockist")

company_name = models.CharField(max_length=32, blank=True)

line1 = models.CharField(max_length=200)

line2 = models.CharField(max_length=200, blank=True)

line3 = models.CharField(max_length=200, blank=True)

city = models.CharField(max_length=32)

county = models.CharField(max_length=32)

postcode = models.CharField(max_length=12)

country = models.ForeignKey(Country)

account = models.ForeignKey('Account')

class Meta:

"""

Django meta options

verbose_name_plural = "Addresses"

"""

verbose_name_plural = "Addresses"

def __unicode__(self):

"""

The unicode representation of this address, the postcode plus the county

"""

return ', '.join((self.postcode, str(self.county)))

def line_list(self):

"""

Return a list of all of this objects address lines that are not blank,

in the natural order that you'd expect to see them. This is useful for

outputting to a template with the aid of python String.join()

"""

return [val for val in (self.line1, self.line2, self.line3, self.city, self.county, self.postcode, self.country.name) if val]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值