No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Modelos: Tweet

17/25
Recursos

Aportes 6

Preguntas 3

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Para tener un mayor orden en el codigo y teniendo en cuenta el concepto de paquetes, lo mas optimo es crear los modelos en un archivo aparte puede llamarse models y ser importado a nuestro archivo main
Para el caso de uso actual quedaria algo asi.

models

# Python
from uuid import UUID
from datetime import date, datetime
from typing import Optional

# Pydantic
from pydantic import BaseModel
from pydantic import Field, EmailStr


class User(BaseModel):
    user_id: UUID = Field(..., alias="id")
    email: EmailStr = Field(..., example="[email protected]")
    first_name: str = Field(..., min_length=2, max_length=50, example="John")
    last_name: str = Field(..., min_length=2, max_length=50, example="Doe")
    birthday: Optional[date] = Field(default=None)


class UserIn(User):
    password: str = Field(..., min_length=8, max_length=30)


class UserOut(User):
    pass


class Tweet(BaseModel):
    tweet_id: UUID = Field(..., alias="Tweet id")
    content: str = Field(..., min_length=2, max_length=240, example="Hello World")
    created_at: datetime = Field(default=datetime.now())
    updated_at: Optional[datetime] = Field(default=None)
    by: UserIn = Field(..., alias="User")

main

# Python
# Pydantic
# FastAPI
from fastapi import FastAPI


# Models
from models import User, UserIn, UserOut
from models import Tweet

app = FastAPI()


@app.get(path="/home", tags=["Home"])
def home():
    return {"message": "Welcome"}

En twitter no son 256 caracteres, son 280. Yo lo defin铆 con 280, pero como es un clon, puedes hacerlo como quieras.

Aporte sobre las fechas

"A timestamp without a time zone attached gives no useful information,
because without the time zone, you cannot infer what point in time your

application is really referring to."

La frase de arriba la saqu茅 de un libro llamado Serious Python y es muy cierta, no nos sirve de nada tener una fecha y hora si no sabemos a que zona horaria corresponde, para esto tenemos que crear un 鈥榯ime zone-aware timestamp鈥 para lo cual propongo hacer lo siguiente

from datetime import datetime

from datetutil import tz  # Esto debes instalarlo en el enorno virtual con pip install python-datetutil

created_at = datetime.utcnow().replace(tzinfo=tz.utc())

Es necesario el metodo replace puesto que de no usarse si bien tendremos la hora con el estandar UTC, el atributo tzinfo seguir谩 vacio y no seria un time zone-aware timestamp (esto Python mismo lo especifica en las docs)

imagina un tweet con muchisimos likes y retweets y que de repente el creador lo modifique por un discurso de odio llamese homofobia,machismo etc. Me parece razonable que no se pueda cambiar

ya tengo tantas ideas en mi cabeza ajjaja

Con este profe se ven la programaci贸n tan f谩cil! gracias MArtoni